相关疑难解决方法(0)

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

我正在尝试设计一个实时事件发生的系统,我想将它们与时钟同步. [NSDate date]通常可以,但用户可以改变这一点并欺骗系统.我需要的是一个时钟,我可以从相对时间(例如64位计数器) - 我不需要绝对时间(或一天中的时间等).

我可以使用这样的API吗?

编辑:我还想补充一点,这个时钟需要在应用程序的会话上持久化.

time objective-c ios

24
推荐指数
4
解决办法
9600
查看次数

有没有办法确定iOS中的实际时间和日期(不是设备的时间)

在iOS中,我需要知道实际时间(UTC),而不是设备的时间.换句话说,用户不应该篡改时间或日期.

任何需要网络连接的东西都不好(因此不能选择访问时间服务器).

AFAIK,有两种理论方法可以达到这个目的:

  • 使用GPS卫星信号的时间戳
  • 从运营商处获取当前时间

问题是iOS中的任何API都不会公开此信息.

还有另外一种方法吗?

gps cellular-network ios

13
推荐指数
1
解决办法
1505
查看次数

计算Cocoa中两个时间点之间的秒数,即使系统时钟在中途发生变化

我正在编写一个Cocoa OS X(Leopard 10.5+)最终用户程序,该程序使用时间戳来计算屏幕上显示内容的统计信息.使用重复的NSTimer运行程序时,会定期计算时间. [NSDate date]用于捕获时间戳,开始结束.以秒为单位计算两个日期之间的差异是微不足道的.

如果最终用户或ntp更改系统时钟,则会出现问题. [NSDate date]依赖于系统时钟,因此如果它被改变,Finish变量将相对于Start变形,从而显着地搞乱了时间计算.我的问题:

1. 即使系统时钟在中途改变,如何准确计算开始结束之间的时间(以秒为单位)?

我想我需要一个不变的参考时间点,所以我可以计算从那以后经过了多少秒.例如,系统正常运行时间.具有10.6 - (NSTimeInterval)systemUptime的一部分NSProcessInfo,它提供了系统正常运行时间.但是,这不起作用,因为我的应用程序必须在10.5中工作.

我尝试使用NSTimer创建时间计数器,但这不准确.NSTimer有几种不同的运行模式,一次只能运行一种.NSTimer(默认情况下)进入默认运行模式.如果用户开始操作UI足够长的时间,这将进入NSEventTrackingRunLoopMode并跳过默认运行模式,这可能导致跳过NSTimer激活,使其成为计算秒数的不准确方式.

我还考虑过创建一个单独的线程(NSRunLoop)来运行NSTimer秒计数器,使其远离UI交互.但我对多线程非常陌生,如果可能的话,我想远离它.此外,我不确定这是否会在CPU被另一个应用程序(Photoshop渲染大图像等等)绑定的情况下准确工作,导致我的NSRunLoop被搁置足够长的时间以使其陷入困境的NSTimer.

我感谢任何帮助.:)

cocoa timer objective-c clock

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

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
查看次数

标签 统计

ios ×3

objective-c ×3

cellular-network ×1

clock ×1

cocoa ×1

gps ×1

nsdate ×1

time ×1

timer ×1