UILocalNotification isn't working at all

2020-02-03 13:24发布

I'm having some really irritating problems with UILocalNotification.

While finishing up an app that I've nearly completed, I noticed that I couldn't get local notifications to work, no matter what I tried.

So instead of wasting time, I decided to go back to basics and see if I could get them working at all.

I created a new XCode view-based application, and replaced -viewDidLoad with this:

- (void)viewDidLoad
{
    UILocalNotification * theNotification = [[UILocalNotification alloc] init];
    theNotification.alertBody = @"Alert text";
    theNotification.alertAction = @"Ok";
    theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];

    [[UIApplication sharedApplication] scheduleLocalNotification:theNotification];
}

However, that also doesn't do anything at all.
I expected to see a notification 10 seconds after launching the app, but nothing appears.
Also, I tested this on both my iPhone and the simulator.

Am I missing something really crucial here? (I've searched through the Apple documentation and couldn't find anything as to why this is happening)

Thanks

3条回答
The star\"
2楼-- · 2020-02-03 13:48

Just a comment from my personal adventures in stupidity...

I had the same issue, but my problem was that I had forgotten to assign a value to alertBody. If you don't set alertBody, the notification won't display.

查看更多
太酷不给撩
3楼-- · 2020-02-03 13:55
  1. the fireDate must be future time.
  2. app must be running in backdrop, or is closed.
  3. one more thing, do not forget to show query whether to allow push, add below code to AppDelegate:

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
      if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
           UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; 
           [application registerUserNotificationSettings:settings]; 
      }
    }
    
查看更多
爷的心禁止访问
4楼-- · 2020-02-03 14:12

UILocalNotifications are only displayed automatically if the app is not running (or running in background). If the app is running and a local notification fires, UIApplicationDelegate’s - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification method gets called and the system doesn’t display anything (nor does it play a sound). If you want to display the notification, create an UIAlertView yourself in the delegate method.

查看更多
登录 后发表回答