在我的应用中,我想每30分钟发送一次本地推送通知。一种方法是只配置local push notification
并激活它。但是,用户有可能改变他的时间并向前迈进30分钟。以这种方式可以做作弊。
我想配置我的应用,以便通知仅在30分钟后发生。我怎样才能做到这一点。我的应用程序确实与服务器通信并可以获取其时间戳,但我想做的事情不会占用太多的服务器资源。
答案 0 :(得分:0)
我能想到检测用户改变系统时钟的唯一方法如下:
[NSDate date]
之间的区别。坚持为[NSNumber numberWithFloat:serverOffset];
- (BOOL)deviceClockChanged
的方法,再次询问服务器并与持久值进行比较。如果差异大于同步请求的时钟漂移+延迟的一些小容差,那么您可以断定时钟已更改。在UTC中完成所有这些操作,使其独立于时区之间的用户旅行。如果你愿意,我可以提供第1点和第2点的代码示例,如果你愿意,我可以为第3点提供一些@“警告文本”,这会让用户对编辑他的通知感到非常内疚。
我原来的答案在这里。如果您选择让用户编辑通知,这些方法将是关键... UIApplication有一个属性:
NSArray *scheduledLocalNotifications;
并实施:
- (void)cancelLocalNotification:(UILocalNotification *)notification
所以改变一个,取消它,然后重新安排它。