【问题标题】:Cancel LocalNotifications method not executing when user closes/exits the app取消用户关闭/退出应用程序时未执行的 LocalNotifications 方法
【发布时间】:2015-07-23 16:56:11
【问题描述】:

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

我查看了关于堆栈溢出的其他类似问题,但似乎无法让任何这些建议发挥作用。请指教。

【问题讨论】:

    标签: ios objective-c xcode uilocalnotification localnotification


    【解决方案1】:

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

    如果您的应用处于前台,当通知到达时,didReceiveLocalNotification 方法将被调用。

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

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

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

    【讨论】:

    • 你能用代码解释我如何实现这一点吗?应在何时何地调用 cancelLocalNotitification 方法。
    【解决方案2】:
    • (void)applicationDidEnterBackground:(UIApplication *)application

    过渡到背景,即按下主页按钮时。

    • (void)applicationWillEnterForeground:(UIApplication *)application

    退出后台状态时调用

    • (void)applicationWillTerminate:(UIApplication *)application

    仅在应用运行时调用。如果应用被挂起,则不会调用此方法。

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

    【讨论】:

    • 我希望它自动发生。这样,如果应用程序崩溃或用户电池没电了,它就会取消通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多