我用CMPedometer设计应用程序,有一个奇怪的问题.我有来自我的客户的日志,我看这个CMPedometerData,我认为真的不正确,我不明白为什么会这样
[2017-04-11 20:16:34 +0000] CMPedometerData,startDate 2017-04-11 20:16:32 +0000 endDate 2017-04-11 20:18:41 +0000步3距离2.130000000004657 floorsAscended(null) floorsDescended(null)currentPace(null)currentCadence(null)averageActivePace 0>
正如你可以看到我的客户端(我无法重现这个错误)从方法得到startPedometerUpdatesFromDate
pedometerData和endDate 2017-04-11 20:18:41比现在更大2017-04-11 20:16:34(它是startPedometerUpdatesFromDate之后的第一个CMPedometerData从背景返回后启动 - willEnterForeground
方法).也许有人已经遇到过类似的问题?
我的代码部分:
- (void)didEnterBackground {
dispatch_async(dispatch_get_main_queue(), ^{
[[Pedometer sharedInstance].motionActivityManager stopActivityUpdates];
[[Pedometer sharedInstance].pedometer stopPedometerUpdates];
});
}
- (void)willEnterForeground {
NSDate *nowDate = [NSDate new];
/* here is request to get historical data from lastDateUpdate (store in database) to now date */
[[Pedometer sharedInstance] importDataFrom:lastDateUpdate endDate:nowDate completion:^{
dispatch_async(dispatch_get_main_queue(), ^{
/* show info */
});
}];
dispatch_async(dispatch_get_main_queue(), ^{
[self startUpdatingData:nowDate]; …
Run Code Online (Sandbox Code Playgroud) 休闲游戏的一个常见用途是人为地推进系统时钟以在游戏中领先.如何在iOS设备上的应用程序检测到这样的用户时钟进度?
理想情况下,该解决方案对于重新启动是强大的,但这不是必需的.
可能重复:
iOS中是否有可以使用的时钟,用户无法更改
我知道在许多iOS游戏中,任务需要花费时间(即"动物完成繁殖后10小时"),可以进入"设置"并更改时间以加快完成任务.在我正在开发的游戏中,我不希望用户这样做,所以我试图实现一个系统来防止这种类型的作弊.我已经考虑了很多,但无法提出解决方案.基本上,我的问题是如何在不依赖系统时钟(可以轻易操作)的情况下跟踪时间,以防止用户作弊?
可能重复:
如何在应用程序运行之间本地检测用户的iPhone时钟进度?
有没有办法确定iOS中的实际时间和日期(不是设备的时间)
iOS中是否有可以使用的时钟,用户无法更改
我正在使用基于订阅的自动续订应用程序.当应用程序收到Apple的最新收据时,它会将expires_date_ms
密钥存储在NSUserDefaults
.该日期过后30天,该应用程序会检查Apple以查看订阅是否仍处于活动状态.该应用可被视为离线应用,但必须每30天连接一次互联网才能检查订阅状态.此时间比较将用于告诉用户他/她必须连接.
我使用下面的代码比较当前时间expires_date_ms
:
NSTimeInterval expDateMS = [[productInfo objectForKey:@"expires_date_ms"] doubleValue];
NSTimeInterval currentDateMS = ([[NSDate date] timeIntervalSince1970] * 1000);
if (currentDateMS > expDateMS)
subExpired = YES;
Run Code Online (Sandbox Code Playgroud)
这很好并且运行良好,但据我所知,有一个漏洞可以被利用 - 如果用户将设备的时钟设置为一个小时/月/十年,时间比较将变得不可靠,因为[NSDate date]
使用设备的当前时间(请如我错了请纠正我).
有没有办法检索与设备无关的时间(以毫秒为单位)?可以准确可靠地测量而无需关注器件时钟的器件?