我需要确保我的应用获得正确的时间,而不是用户在设置中设置的时间.
例如,一旦用户启动应用程序,我就想获得一个时间戳.用户将看到每秒更新屏幕上的计时器的经过时间.当用户退出应用程序,并在一段时间后重新启动应用程序时,计时器将获取当前时间并将其与其保留的原始时间戳进行比较.所以基本上就像iPhone上的Clock.App中的秒表一样.
现在clock.app的问题在于,如果用户将设置中的时间提前一小时,这将影响计时器.显然我不希望这样,因为在我的应用程序中,这将是作弊.
我需要得到一个更值得信赖的时间源来进行比较.
我可以从互联网上得到时间.但问题是我需要互联网连接,所以只有在有互联网连接时才能使用.我的应用程序需要优先离线工作.
我可以访问某种内部时钟吗?
有没有办法检查用户是否更改了设置中的日期时间?
还有其他想法吗?
谢谢
有人会知道为什么我用以下方法经历了奇怪的正常运行时间吗?
NSProcessInfo *processInfo = [NSProcessInfo processInfo];
NSTimeInterval systemUptime = [processInfo systemUptime];
Run Code Online (Sandbox Code Playgroud)
第一分钟,一切看起来都很好,但是当我回到应用程序上几小时或几天后,正常运行时间仍然是相同的:30分钟,或1小时34分...它似乎随机冻结.主要在iPhone 4上(很少在模拟器或iPad上)
它可能与我的展示方式有关:
+ (NSTimeInterval)uptime:(NSNumber **)days hours:(NSNumber **)hours mins:(NSNumber **)mins
{
NSProcessInfo *processInfo = [NSProcessInfo processInfo];
//START UPTIME///////
NSTimeInterval systemUptime = [processInfo systemUptime];
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];
// Create the NSDates
NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceNow:(0-systemUptime)];
unsigned int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *c = [sysCalendar components:unitFlags fromDate:date toDate:[NSDate date] options:0];
//NSString *uptimeString = [NSString stringWithFormat:@"%dd %dh %dmin", [c …Run Code Online (Sandbox Code Playgroud) 期待看到人们为此想出了什么.基本上我想知道自从我的应用程序上次启动以来是否已重新启动实际设备.人们用什么方法来找出它?(如果有的话?)
我考虑过使用mach_absolute_time,但这仍然是一种不可靠的方法.
干杯