相关疑难解决方法(0)

CMPedometerData中的endDate不正确

我用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>

正如你可以看到我的客户端(我无法重现这个错误)从方法得到startPedometerUpdatesFromDatepedometerData和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)

objective-c ios pedometer

12
推荐指数
1
解决办法
253
查看次数

如何在应用程序运行之间本地检测用户的iPhone时钟进度?

休闲游戏的一个常见用途是人为地推进系统时钟以在游戏中领先.如何在iOS设备上的应用程序检测到这样的用户时钟进度?

  • 不得涉及网络通信
  • 当时钟提前时,不能假设应用程序已打开(运行或暂停)
  • 必须检测时钟提前,检测时钟回滚是不够的

理想情况下,该解决方案对于重新启动是强大的,但这不是必需的.

iphone objective-c clock anti-cheat ios

10
推荐指数
2
解决办法
5351
查看次数

防止游戏中的"时间变化"作弊

可能重复:
iOS中是否有可以使用的时钟,用户无法更改

我知道在许多iOS游戏中,任务需要花费时间(即"动物完成繁殖后10小时"),可以进入"设置"并更改时间以加快完成任务.在我正在开发的游戏中,我不希望用户这样做,所以我试图实现一个系统来防止这种类型的作弊.我已经考虑了很多,但无法提出解决方案.基本上,我的问题是如何在不依赖系统时钟(可以轻易操作)的情况下跟踪时间,以防止用户作弊?

time anti-cheat ios

8
推荐指数
1
解决办法
7701
查看次数

NSDate:获取与设备时钟无关的精确时间?

可能重复:
如何在应用程序运行之间本地检测用户的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]使用设备的当前时间(请如我错了请纠正我).

有没有办法检索与设备无关的时间(以毫秒为单位)?可以准确可靠地测量而无需关注器件时钟的器件?

objective-c nsdate ios

8
推荐指数
2
解决办法
6245
查看次数

获取目标c中的启动时间

如何在目标c中获得ios的启动时间?

有办法搞定吗?

boot objective-c ios

3
推荐指数
1
解决办法
4804
查看次数

标签 统计

ios ×5

objective-c ×4

anti-cheat ×2

boot ×1

clock ×1

iphone ×1

nsdate ×1

pedometer ×1

time ×1