用户关闭应用时取消所有本地通知

Posted

技术标签:

【中文标题】用户关闭应用时取消所有本地通知【英文标题】:Cancel all local notifications when app is closed by the user 【发布时间】:2012-10-27 09:35:49 【问题描述】:

我的应用程序中有一个小错误。 我的应用程序在应用程序运行时的特定时间显示通知,并在切换按钮时取消所有通知。 我的问题是,每当用户使用 ios 的多任务功能关闭应用程序时,通知仍然会显示。

我尝试添加以下不起作用的代码:

- (void)applicationWillTerminate:(UIApplication *)application

    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    [[UIApplication sharedApplication] cancelAllLocalNotifications];

问题是我的应用程序应该在应用程序运行时显示通知,但在应用程序终止时不应该显示通知。 为什么上面的代码不起作用?

【问题讨论】:

在调用 app-lifetime 方法时,您是否查看过文档?应用可以达到哪些状态? 不是真的,但 applicationWillTerminate 确实确实链接到其他东西,问题是我想要我的通知,当应用程序在后台运行时而不是在它关闭时。 我有同样的问题,如果我能找到解决方案,我会更新此报告。 applicationWillTerminate: 不一定会被调用。如果应用程序终止时应用程序当前处于后台,则实际上根本不会调用它。见这里:***.com/questions/7818045/… 【参考方案1】:

正确的答案是目前不能由多任务应用程序完成。一种解决方案是在我们的 info.plist 中设置一个标志,声明您的应用希望在用户切换到另一个应用时被终止 - 然后您将收到 willTerminate 消息(但随后会被终止)。

关于这个主题有大量线程,其中引用了一个 Apple 文档,该文档告诉您已终止的后台应用程序不会收到 willTerminate 消息here。

对我来说,这只是意味着我现在可以用“无法修复”的分辨率关闭一个打开的错误报告 :-)

【讨论】:

好的,谢谢,我不希望我的应用在用户切换它时被杀死,所以我猜它无法完成。【参考方案2】:

仅仅因为您的应用在 app-changer 中可见,并不意味着它仍在运行。它可以随时关闭。您无法区分操作系统关闭您的应用还是用户关闭您的应用。

也许一个按钮就是解决方案?取消所有通知的按钮? 或者您运行一个真正的后台任务(可能会持续大约 5 分钟),然后停止所有通知。或者您只需将通知安排在接下来的 5-10 分钟内即可。

你用它们做什么?

【讨论】:

我确实添加了一个按钮(切换开/关按钮),但一些用户告诉我这个错误存在。所以这就是为什么我想知道是否有解决方案。但这似乎是不可能的。

以上是关于用户关闭应用时取消所有本地通知的主要内容,如果未能解决你的问题,请参考以下文章

用户关闭应用程序时如何处理用户在 Xamarin iOS 上单击本地通知?

当应用程序进入暂停状态时取消本地通知。(从后台删除)

应用程序关闭时如何发送本地通知(swift)?

应用程序关闭时的本地通知处理

应用程序激活时关闭本地通知

用户在屏幕聊天时如何取消本地推送通知?