iOS UILocalNotification设置为每天启动一次,每两天启动一次,并且仅在星期天启动

iOS UILocalNotification设置为每天启动一次,每两天启动一次,并且仅在星期天启动,ios,objective-c,nsuserdefaults,uilocalnotification,Ios,Objective C,Nsuserdefaults,Uilocalnotification,我正在尝试使用设置包来安排UILocalNotification。在“设置”中,您可以选择是否希望通知每天(1/天)、每2天1次、仅在周日或从不发送 以下是我使用的代码(全部在AppDelegate.m中): 如我所述,启动通知的代码正确吗? 如果没有,有什么问题?谢谢 每当用户更改首选项时,您似乎都在安排通知。但是,您从不取消以前计划的通知,这就是为什么您会在与您在一天或两天前反复更改设置的时间完全一致的时间观察到突发通知的原因 计划的通知与要修改的通知集是不同的对象。不幸的是,UILocal

我正在尝试使用设置包来安排UILocalNotification。在“设置”中,您可以选择是否希望通知每天(1/天)、每2天1次、仅在周日或从不发送

以下是我使用的代码(全部在AppDelegate.m中):

如我所述,启动通知的代码正确吗?
如果没有,有什么问题?谢谢

每当用户更改首选项时,您似乎都在安排通知。但是,您从不取消以前计划的通知,这就是为什么您会在与您在一天或两天前反复更改设置的时间完全一致的时间观察到突发通知的原因

计划的通知与要修改的通知集是不同的对象。不幸的是,
UILocalNotifications
没有标识符标记

但是,每当您收到带有
[[UIApplication sharedApplication]cancelAllLocalNotifications]的
DefaultsAnged:
消息时,您可以取消计划所有以前的通知在重新安排之前。这会解决你的问题

另外,请仔细查看哪些建议在启动时取消和重新安排通知,以避免用户重新安装应用时出现突发或重复通知。

我有两个想法

第一:今天的价值是什么

NSDictionary *dictToday= [self getDataFromdate : [compoNents day] month:[compoNents month]];
[dictToday objectForKey:@"saint_description"]
如果此值为nil,则不会弹出通知

第二:检查您的时区和从以下位置返回的时区:

[NSTimeZone defaultTimeZone]

您可能处于+3时区,并将localnotification设置为在负时区触发,这是永远不会发生的。

谢谢,我已经在使用cancelAllLocalNotifications方法,但我不知道为什么,我忘了将其粘贴到此处。问题是,现在他们没有在应该发射的时候发射。例如,如果我使用localNotification.fireDate=[[NSDate-date]dateByAddingTimeInterval:20];和localNotification.repeatInterval=NSDayCalendarUnit;它将每天在20秒后启动通知?也许你在错误的地方使用它
cancelAllLocalNotifications
应该是您在粘贴的方法中所做的第一件事。我已经更新了代码。但这些通知只是没有在它们应该启动的时候启动。有什么想法吗?另外,除了重新安排方法之外,没有任何
取消所有本地初始化。
[NSTimeZone defaultTimeZone]