取消当用户关闭/退出应用时不执行的LocalNotifications方法

时间:2015-07-23 16:56:12

标签: ios objective-c xcode uilocalnotification localnotification

我在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

我已经查看了堆栈溢出上发布的其他类似问题,但似乎无法使这些建议发挥作用。请指教。

2 个答案:

答案 0 :(得分:0)

一旦启动通知,它将在操作系统中注册。操作系统及时提供通知。应用程序终止后,您无法删除通知。终止时不会调用任何方法。

如果您的应用处于foregroung状态时收到通知,则会调用didReceiveLocalNotification方法。

如果你在后台,则调用DidLaunchwithOption方法。

如果应用程序被终止,则不会调用任何方法。

当您在这些方法中收到静默通知时,您将触发静默通知并显示实际通知。您可以使用userinfo来识别您的通知。

答案 1 :(得分:0)

  
      
  • (void)applicationDidEnterBackground:(UIApplication *)application
  •   

转换到后台,即按下主页按钮时。

  
      
  • (void)applicationWillEnterForeground:(UIApplication *)application
  •   

转换出背景状态时调用

  
      
  • (void)applicationWillTerminate:(UIApplication *)application
  •   

仅在应用程序运行时调用。如果应用程序被暂停,则不会调用此方法。

因此,当即将终止应用时,您无法取消通知。因此,您应该选择一些其他机制来删除本地通知。就像创建一个按钮来取消所有通知或类似的东西。