UILocalNotification在重新安装应用程序后触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UILocalNotification在重新安装应用程序后触发相关的知识,希望对你有一定的参考价值。

我的应用程序具有使用UILocalNotification的警报功能,并且效果很好。但是,如果用户卸载了该应用程序,则稍后重新安装该应用程序,他将立即收到所有“中间”通知。

我曾尝试致电:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

如果是第一次启动该应用程序,但没有帮助,因为甚至在调用application:didFinishLaunchingWithOptions:之前就已收到通知。

[4.0在情况更糟,即使用户已删除该应用程序,但仍重复发出警报,但至少该错误已由Apple在更高版本中修复。但是现在我坚持了这一点。有人有主意吗?

答案

这实际上是iPhone中的错误。如果您删除了该应用程序并随后又安装了该应用程序,它将具有相同的应用程序ID,因此当重新安装该应用程序时,即使您没有打开该应用程序,也会触发所有过去的本地通知。

另一答案

根据Apple的说法,这不是错误(我提交了错误报告)。万一用户意外删除了该应用程序,系统会为已卸载应用程序保留UILocalNotifications 24小时,如果在该时间段内重新安装了该应用程序,则系统会还原所述UILocalNotifications。

解决方案是在第一次启动时删除所有UILocalNotifications,如下所示:

- (BOOL)          application: (UIApplication*) application
didFinishLaunchingWithOptions: (NSDictionary*)  launchOptions
{
  if (self.isFirstRun)
  {
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    self.firstRun = NO;
  }

  /* Other code here */
  ...
}

当然,实现您自己的firstRun setter和getter来获取/保存到持久性存储中,例如NSUserDefaults

以上是关于UILocalNotification在重新安装应用程序后触发的主要内容,如果未能解决你的问题,请参考以下文章

如何重新排列 UILocalNotification 表格视图的单元格?

UILocalNotification 没有在正确的时间调用

UILocalNotification - 在每个时区的早上 6:00 触发

iPhone上睡眠模式下的UILocalNotification

删除并重新安装 iphone 应用后接收本地通知

UILocalNotification - 应用程序未运行时如何处理?