8

我注意到,如果我手动设置我的设备时间,并关闭我的 iOS 设备上的自动时间同步,[NSDate date]返回日期和时间假设设备时间是正确的——它可能不是。

由于文档提到NSDate与 NTP 有某种同步,我想知道是否有任何内置方法可以获取准确的日期和时间,而不必假设设备的日期和时间是正确的。

4

2 回答 2

3

也许https://github.com/jbenet/ios-ntp可以帮助你?它是一个可以从时间服务器获取日期和时间的库。

于 2013-02-19T18:06:03.340 回答
0

我尝试了 ios-ntp 但没有得到预期的结果,所以我找到了另一个运行良好且非常容易实现的库。

NH网络时间

豆荚:

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];

干杯!!!:)

于 2017-12-15T05:19:25.550 回答