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

Iphone UILocalNotification在重新安装应用程序后激发,iphone,notifications,repeat,alarm,uilocalnotification,Iphone,Notifications,Repeat,Alarm,Uilocalnotification,我的应用程序有一个使用UILocalNotification的报警功能,它工作得很好。但是,如果用户卸载应用程序,然后重新安装,他将立即收到所有“中间”通知 我试着打电话: [[UIApplication sharedApplication] cancelAllLocalNotifications]; 如果是第一次启动应用程序,但没有帮助,因为在调用application:didFinishLaunchingWithOptions:之前就收到了通知 在4.0版本中,即使用户删除了应用程序,警报

我的应用程序有一个使用UILocalNotification的报警功能,它工作得很好。但是,如果用户卸载应用程序,然后重新安装,他将立即收到所有“中间”通知

我试着打电话:

[[UIApplication sharedApplication] cancelAllLocalNotifications];
如果是第一次启动应用程序,但没有帮助,因为在调用application:didFinishLaunchingWithOptions:之前就收到了通知


在4.0版本中,即使用户删除了应用程序,警报也会重复,这一情况更糟,但至少苹果在以后的版本中修复了该漏洞。但是现在我被这件事缠住了。有人有主意吗?

这实际上是iPhone中的一个bug。如果你删除了应用程序,以后再安装,它将具有相同的应用程序id,因此当重新安装应用程序时,即使你没有打开应用程序,也会触发所有以前的本地通知。

根据苹果的说法,这不是一个bug(我提交了bug报告)。如果用户意外删除应用程序,系统会将卸载应用程序的UILocalNotifications保留24小时,如果在该时间范围内重新安装应用程序,系统会恢复所述UILocalNotifications

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

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

  /* Other code here */
  ...
}

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

对于iOS 4.0、4.1…,您认为有什么解决方法吗?因为它将是非常恼人的收到这些重复报警,但无论如何都不禁用它(4.0)。没有其他去,这就是为什么他们提出了一个错误。我仍然看到这种行为截至4.3,特别是当运行(安装)通过XCode。我仍然看到这种行为在iOS 6.0.1运行的应用程序!有人能在苹果发布一个关于这个bug的bug报告链接吗?正如@niraj所说,我在iOS 6.0中也看到了这一点。嗨,你有没有解决这个问题的办法……这个“功能”有没有被记录在案?+1这看起来很愚蠢。一旦通知被提交到操作系统,应用程序就不会拥有这些通知,当您尝试安排65个通知而不是最多64个通知时,这一点很明显。应用程序应该负责存储自己对通知所表示的内容的表示,而不是依赖于操作系统。如果这样一个应用程序在启动之前不知道这些通知,那么它们就是垃圾。