取消具有重复间隔的 UILocalNotification

Cancel a UILocalNotification with repeat interval

我正在做一个具有重复间隔的警报应用程序。我的问题是,即使用户单击本地通知,returns 到应用程序,然后返回到 phone 的主屏幕,UILocalNotification 仍然每分钟触发一次。我知道 [[UIApplication sharedApplication] cancelAllLocalNotifications]; 并将其放入我的 viewDidLoad 方法中。有什么建议可以解决这个问题吗?

将它放在 viewDidLoad 中对某些情况有好处,但对您而言并非如此。想想什么时候调用 viewDidLoad

Called after the controller's view is loaded into memory.

所以换句话说,下一次调用它是在你的 ARC 朋友从内存中释放它之后。所以,是的,最终 cancelAllLocalNotifications 会再次被调用,只是不会在用户将应用程序置于后台然后 returns 将其置于前台时,因为它仍然记忆中有个家;下次将特定视图加载到内存中时将调用它。

此外,这可能不是一个好的逻辑,因为每个用户都会发生这种情况,即使他们不想取消重复。

最终,您将不得不创建额外的逻辑来破译哪些用户使用适合您和您的项目的任何资源点击了 'snooze' 或 'cancel'。就个人而言,我会指导您使用基于类别的通知,这样您就可以根据需要取消它,而不是 'just in case'。 See here 如何设置它们。