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