Max*_*007 8 iphone gps gps-time
我正在寻找一种可靠的方式来获得时间.它不能被篡改,它需要脱机工作.所以没有互联网时间,设置中没有用户时间设置,也没有上次重启后的BSD正常运行时间.我想知道,因为GPS使用原子钟工作,我是否可以访问该信息.
谢谢
这可以获得GPS时间:
#import <CoreLocation/CoreLocation.h>
CLLocation* gps = [[CLLocation alloc]
initWithLatitude:(CLLocationDegrees) 0.0
longitude:(CLLocationDegrees) 0.0];
NSDate* now = gps.timestamp;
Run Code Online (Sandbox Code Playgroud)
但它似乎并不是防篡改的.
我在飞机模式(iOS 6.1)的iPhone 4上尝试了这个代码,即使这样,它也可以提供时间.但不幸的是,这一次似乎随系统时钟而变化.啊.
我发现(仍处于飞行模式)的有趣的事情是,如果你篡改系统时钟(转到off时间和日期后Set Automatically),然后Set Automatically转回on,机器可以毫无障碍地恢复真实(原始)时间.即使在手机电源循环后,这也能正常工作.如此看来,还有就是类似设备内部维护一个防篡改的时间.但是如何访问这个?
PS 从2010年开始对此进行讨论.倒数第二条评论的作者在一个防辐射庇护所中尝试了这一点:所以很明显电话没有从任何外部来源获得原始时间.
发现了一些关于另一种时间测量的帖子(这里,这里和这里):系统内核启动时间.通过这样的电话访问它:sysctlbyname("kern.boottime", &boottime, &size, NULL, 0);.不幸的是,即使没有重启,它也会随着用户调整的数据和时间而变化.另一个功能gettimeofday()同样取决于用户定义的时间.
Ben*_*nno -2
这将为您提供当前日期和时间:
NSDate *now = [NSDate date];
Run Code Online (Sandbox Code Playgroud)
这将尽可能可靠。当 iPhone 可以访问 NTP 服务器时,iPhone 上的内部时钟将会更新。如果手机使用 GPS 作为时间同步源,它还将用于更新可通过上述方法访问的同一系统范围时钟。
CoreFoundation 的等价物类似于:
CFAbsoluteTime now = CFAbsoluteTimeGetCurrent();
Run Code Online (Sandbox Code Playgroud)
它返回相当于正常 UNIX 纪元以来秒数时间戳的 CoreFoundation 值。
| 归档时间: |
|
| 查看次数: |
11564 次 |
| 最近记录: |