问题
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
回答1:
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.
回答2:
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:
- the fireDate must be future time.
- app must be running in backdrop, or is closed.
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]; } }
来源:https://stackoverflow.com/questions/4974512/uilocalnotification-isnt-working-at-all