我注意到,如果我手动设置我的设备时间,并关闭我的 iOS 设备上的自动时间同步,[NSDate date]
返回日期和时间假设设备时间是正确的——它可能不是。
由于文档提到NSDate
与 NTP 有某种同步,我想知道是否有任何内置方法可以获取准确的日期和时间,而不必假设设备的日期和时间是正确的。
也许https://github.com/jbenet/ios-ntp可以帮助你?它是一个可以从时间服务器获取日期和时间的库。
我尝试了 ios-ntp 但没有得到预期的结果,所以我找到了另一个运行良好且非常容易实现的库。
豆荚:
pod 'NHNetworkTime'
pod 'CocoaAsyncSocket'
使用简单,只要你想获得时间就导入这个:
#import "NHNetworkTime.h"
在应用程序中调用同步:didFinishLaunchingWithOptions:以在启动应用程序时从服务器更新时间:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NHNetworkClock sharedNetworkClock] synchronize];
return YES;
}
然后您可以在源代码中的任何位置同步完成时获取网络时间:
NSDate *networkDate = [NSDate networkDate];
或在时间更新时添加通知以在您想要的任何地方重新更新您的 UI:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkTimeSyncCompleteNotification:) name:kNHNetworkTimeSyncCompleteNotification object:nil];
干杯!!!:)