在应用程序终止时取消所有本地通知?

3

当我的应用程序被终止(无论是由操作系统还是通过双击主屏幕按钮并关闭应用程序)时,我希望取消所有本地通知并将应用程序图标徽章数量设置为0。我只需将这两个调用添加到我的主要应用程序委托代码中:

-(void)applicationWillTerminate:(UIApplication *)application 
{
        [application cancelAllLocalNotifications];
        [application setApplicationIconBadgeNumber:0];
}

现有通知仍在运行,标记数量保持设置不变?

2个回答

1

applicationWillTerminate: 在操作系统杀死您的应用程序时不会被调用。操作系统只是在不通知您的应用程序的情况下终止进程。目前没有记录的方法可以在此时执行代码。


当用户通过双击主页按钮并点击减号来终止应用程序时怎么办? - derrick
这是同样的事情 - 可以通过调试器轻松检查 - Steven Kramer
谢谢。我现在可以停止寻找了 :-) - derrick
那么你的意思是在应用程序即将被终止时执行代码是不可能的吗? - jowie
没错,你不能在终止时执行代码。最好的方法是在应用程序进入非活动状态或进入后台时更新状态,以防它被终止。 - progrmr
糟糕 - 甚至尝试为SIGKILL安装信号处理程序...在模拟器中有几次成功触发,但并非每次都能成功。 - James Boutcher

0

你应该使用applicationWillResignActive:代替。

iOS 4.0开始,当应用程序在后台被杀死时,将不会调用applicationWillTerminate。现在,当你按下主页按钮或切换应用程序时,应用程序会被放置在后台。


1
不幸的是,这意味着每次应用程序被发送到后台时,本地通知都会被删除,我不确定这是否是所需的结果。 - jowie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接