应用程序终止时删除本地通知

Posted

技术标签:

【中文标题】应用程序终止时删除本地通知【英文标题】:Removing Local Notifications when app has been terminated 【发布时间】:2012-11-27 17:11:17 【问题描述】:

在我的应用程序中,我设置了本地通知以在应用程序运行时通知用户。为了在应用程序终止时清理这些通知,我设置了applicationWillTerminate: 来清除这些通知:

- (void)applicationWillTerminate:(UIApplication *)application

    NSLog(@"applicationWillTerminate");
    [[UIApplication sharedApplication] cancelAllLocalNotifications];

不幸的是,如果应用程序崩溃,或者我终止调试,则不会调用此函数,因此我仍然会收到发送到设备的本地通知。

有没有办法确定应用程序是否意外退出,以便我整理这些?

【问题讨论】:

【参考方案1】:

我使用这个 KSCrash 库取得了巨大的成功。也许它也可以帮助你:

https://github.com/kstenerud/KSCrash

或者,您是否在 .plist 文件中设置了 UIApplicationExitsOnSuspend?如果不这样做,则无法保证在使用 ios 4 时会调用 applicationWillTerminate

【讨论】:

它看起来是一个不错的崩溃报告器,但不幸的是它只允许在崩溃时调用 C 方法,而不是 Objective-C,因此我将无法调用 cancelAllLocalNotifications 好的。我会看看我是否能找到另一个解决方案。感谢您的留言。 根据您的想法,我尝试了 Crittercism,它在崩溃时有一个 Objective-C 委托......不幸的是,这也不起作用。 我也在考虑 Crittercism。我已经更新了我的答案,也许这可以以某种方式帮助你。谢谢! 不幸的是我也不能使用UIApplicationExitsOnSuspend,因为我的应用程序需要在后台运行。我设置的本地通知应该在后台提醒您,但是如果应用程序崩溃或卸载,我需要删除本地通知。

以上是关于应用程序终止时删除本地通知的主要内容,如果未能解决你的问题,请参考以下文章

应用终止后发送本地通知

当应用程序处于终止状态而没有用户交互时如何清除本地通知。

当应用程序处于后台/终止并收到 FCM 通知时,如何在 Flutter 中显示本地通知?

当应用程序处于终止状态时,iOS 静默推送通知不会收到

如何确保在应用程序终止后*发送 iOS 本地通知

从通知区域中删除 NotifyIcon