iphone local notification in simulator

泪湿孤枕 提交于 2019-11-26 19:18:26

问题


I just downloaded xcode and trying to make local notification example. The question is if local notification works in simulator?

thank you


回答1:


Yes, local notifications work with the simulator. However, make sure you are implementing application:didreceiveLocalNotification in your app delegate if you want to see the notification while your app is in the foreground:

- (void)application:(UIApplication *)application
    didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MyAlertView"
        message:notification.alertBody
        delegate:self cancelButtonTitle:@"OK"
        otherButtonTitles:nil];
    [alertView show];
    if (alertView) {
        [alertView release];
    }
}

Otherwise, make sure you schedule your notification for some time in the future, then close the application, in order to see the Apple sample work:

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil) return;
NSDate *fireTime = [[NSDate date] addTimeInterval:10]; // adds 10 secs
localNotif.fireDate = fireTime;
localNotif.alertBody = @"Alert!";
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];

It's easy to think you're not implementing the test code correctly, and you just aren't handling the event while the app is running.




回答2:


Another gotcha you might find, for anyone who stumbles on this older question: iOS 8 introduced new notification permissions; and your app has to explicitly ask for them.

In your AppDeligate.m:

- (BOOL)application:(UIApplication *)application 
          didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //register local notifications
    if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    }

    //the rest of your normal code

    return YES;
}

If you don't, your notification will never fire, and you'll get a wonderful message like this in your logs: "Attempting to schedule a local notification <UIConcreteLocalNotification: 0x7ae51b10>{... alert details ...} with an alert but haven't received permission from the user to display alerts"




回答3:


local notifications work on simulator, push notifications do not




回答4:


Yes Local Notification work on local notification. Click here for apple doc.




回答5:


To test local notifications in iphone simulator,follow these steps:

  1. As simulator time is exactly the one in your macbook,change the time of your mac to the 1 minute previous of your desired time (when you are expecting your local notification to fire)
  2. Restart simulator(This is awkward,but sometimes it seems iphone simulator fails to get current update time instantly)
  3. Run the simulator once again(may be by running your app from xcode,in which case you must press the home button to send your app to background).Once the time is reached you should receive the notification.

These steps helped me always to get successful local notifications.



来源:https://stackoverflow.com/questions/3588964/iphone-local-notification-in-simulator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!