我在Xcode模拟器和iPhone 6上的iOS 8.4上进行测试。我的通知工作正常并且完美无缺。但是,当用户退出/关闭应用时,我无法弄清楚如何取消通知。按主页按钮不应取消通知,仍应触发通知。
这就是我的尝试。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
return YES;
}
[[UIApplication sharedApplication] cancelAllLocalNotifications];
对于以下方法 - 它会在用户按下主页按钮时取消通知,或者关闭不是我想要的应用程序。
- (void)applicationDidEnterBackground:(UIApplication *)application
对于以下方法 - 主页按钮或关闭应用程序的通知不会取消。
- (void)applicationWillEnterForeground:(UIApplication *)application
对于以下方法 - 它根本不执行主页按钮或关闭应用程序的方法。
- (void)applicationWillTerminate:(UIApplication *)application
我已经查看了堆栈溢出上发布的其他类似问题,但似乎无法使这些建议发挥作用。请指教。
答案 0 :(得分:0)
一旦启动通知,它将在操作系统中注册。操作系统及时提供通知。应用程序终止后,您无法删除通知。终止时不会调用任何方法。
如果您的应用处于foregroung状态时收到通知,则会调用didReceiveLocalNotification方法。
如果你在后台,则调用DidLaunchwithOption方法。
如果应用程序被终止,则不会调用任何方法。
当您在这些方法中收到静默通知时,您将触发静默通知并显示实际通知。您可以使用userinfo来识别您的通知。
答案 1 :(得分:0)
- (void)applicationDidEnterBackground:(UIApplication *)application
转换到后台,即按下主页按钮时。
- (void)applicationWillEnterForeground:(UIApplication *)application
转换出背景状态时调用
- (void)applicationWillTerminate:(UIApplication *)application
仅在应用程序运行时调用。如果应用程序被暂停,则不会调用此方法。
因此,当即将终止应用时,您无法取消通知。因此,您应该选择一些其他机制来删除本地通知。就像创建一个按钮来取消所有通知或类似的东西。