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

问题描述 投票:6回答:2

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

我曾尝试致电:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

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

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

iphone notifications repeat alarm uilocalnotification
2个回答
6
投票

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


15
投票

根据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

© www.soinside.com 2019 - 2024. All rights reserved.