【问题标题】:Is it possible to call past date UILocal Notification?是否可以调用过去日期的 UILocal 通知?
【发布时间】:2013-05-27 14:45:35
【问题描述】:
我必须为接下来的 30 天添加本地通知(2013 年 6 月 1 日至 2013 年 6 月 30 日)。
例如:
我必须将“设置”上的日期更改为 June-15-2013,然后我必须将日期更改为 June-05-2013。本地通知未要求(6 月 1 日至 6 月 15 日)。 6 月 16 日之后工作正常。
我的问题是
1) UILocalNotification 触发过去日期的任何限制?
2) 是否可以触发过去日期的本地通知?
请帮助我。提前致谢。
【问题讨论】:
标签:
iphone
ios
xcode
uilocalnotification
【解决方案1】:
Apple 文档声明
如果指定的值为 nil 或者是过去的日期,则
通知会立即发送。
因此,如果您在过去设置本地通知的 fireDate,该通知将立即被触发。
我认为您的情况也很特殊,因为您手动更改了设备日期设置。更改时区时可能会更改日期设置,但您的情况不同,您没有更改时区,您只是更改日期,我认为您的新日期之前(过去)的本地通知将被忽略。
【解决方案2】:
嗯,这是我在对应用程序的健壮性进行 cam 测试时遇到的情况之一。我的应用程序还发布了未来日期的通知。一切顺利,如果用户不更改日期。但作为测试的一部分,将日期更改为未来和过去会禁用一些本应出现的通知。
我解决这种情况的方法是响应 application Delegate
中的以下回调
-(void)applicationSignificantTimeChange:(UIApplication *)application
在这里,我根据当前日期的要求重新发布了所有通知。这在我的情况下起到了作用。这是一个繁重的解决方案,因为所有通知都必须删除并重新发出,但对我来说是必需的。
还有一种情况,您可能需要重新同步通知。用户可能还更改了应用关闭的日期。为此,我让应用程序在每次启动时重新同步通知。您可以通过检查日期是否有重大变化来优化此方法。