改变iPhone的日期和时间

我正在玩iOS SDK,我试图以编程方式更改设备的日期和时间。 我读到标准SDK是不可能的,这是有道理的,但我想知道是否可以使用私有API这样做,因为我只是做一个应用程序作为一项研究,并不打算发布它在App Store上

1)将bool值设置为YES添加到您的应用程序权利com.apple.timed

2)禁用自动时间设置(如果需要,还可以设置时区)

链接到私有CoreTime.framework 。 声明这些function

 void TMSetAutomaticTimeEnabled(BOOL); void TMSetAutomaticTimeZoneEnabled(BOOL); 

禁用自动时间设置

 TMSetAutomatocTimeEnabled(YES); 

如果您想知道这些设置的状态,您可以使用这些function

 BOOL TMIsAutomaticTimeEnabled(); BOOL TMIsAutomaticTimeZoneEnabled(); 

3)更改当前日期和时间

声明这些

 struct timezone { int tz_minutewest; int tz_dsttime; }; void settimeofday(struct timeval*, struct timezone*); 

此API在OS X中是公开的,因此您可以在此处找到文档https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man2/settimeofday.2.html

作为一个例子,我们将时钟设置为10分钟

 struct timeval tv; tv.tv_sec = [[NSDate dateWithTimeIntervalSinceNow:600] timeIntervalSince1970]; tv.tv_usec = 0; settimeofday(&tv, NULL); 

4)通知日期/时间变化

 CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("SignificantTimeChangeNotification"), NULL, NULL, CFNotificationSuspensionBehaviorDeliverImmediately); 
Interesting Posts