NHNetworkTime 1.7.1

NHNetworkTime 1.7.1

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布上次发布2021年5月

Nguyen Cong Huy 维护。



  • 作者
  • Huy Nguyen Cong

网络时间协议 (NTP) 客户端。

关于

最老的 iPhone、iTouch 或 iPad 上的时钟并没有与正确的时间紧密同步。在从电话系统获取时间的设备的情况下,有一个设置可以启用与电话公司时间的同步,但该时间已被证明与正确时间相差一分钟以上。

此外,用户可能会改变他们的设备时间,这可能会严重影响依赖于正确时间执行功能的应用程序,或者可能会将他们的设备时钟设为过去,试图规避到期日期。

本项目包含使用简单网络时间协议 (SNTP: RFC 5905) 从标准时间服务器获取时间的代码。由于目标是将时间精度提高到十分之一秒,而不是到微秒,因此实现并不像该文档中所描述的那样严格。

使用 NTP 协议的计算机通常会将其用于一个连续的底层任务来连续追踪时间。一个后台应用程序会使用从一组时间服务器中获得的不定期的时间估计,通过随着时间的推移对这些值进行采样来确定最佳时间。iOS 应用程序则不同,更有可能希望得到一个一次性、快速的时间估计。

兼容性

  • iOS 7 以及更新版本。
  • Objective C,还有带有桥接头(请参阅以下指南)的 Swift

使用方法

Cocoapod

将以下行添加到 Podfile 中

pod NHNetworkTime

然后请在终端运行以下命令进行安装
pod install

注意:如果上述 pod 无法正常工作,请尝试在 Podfile 中使用以下 pod 定义
pod 'NHNetworkTime', :git => 'https://github.com/huynguyencong/NHNetworkTime.git'

手动

将 NHNetworkTime 文件夹中的所有文件添加到您的项目中。然后使用 Cocoapod 或手动添加 CocoaAsyncSocket

简单易用

每次需要获取时间时都导入此模块

#import "NHNetworkTime.h"

-application:didFinishLaunchingWithOptions: 中调用 synchronize 来更新从服务器获取的时间,当应用程序启动时

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

Swift

使用 use_frameworks!

如果您在Podfile中启用了use_frameworks!选项,请在每个代码文件中导入NHNetworkTime框架使用NHNetworkTime对象

@import NHNetworkTime
不使用 use_frameworks!

NHNetworkTime.h导入到您的桥接头文件中

#import <NHNetworkTime.h>
在您的代码中

现在,您可以在您的代码中调用以下代码

NHNetworkClock.sharedNetworkClock().synchronize()

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("syncCompleteNotification"), name: kNHNetworkTimeSyncCompleteNotification, object: nil)

更多的NHNetworkClock信息

  • 使用NSNotificationCenter添加观察者kNHNetworkTimeSyncCompleteNotification以在时间同步完成时接收通知
  • 属性isSynchronized:检查网络时间是否已同步
  • 属性shouldUseSavedSynchronizedTime:在使用从服务器同步前保存在最后的同步中的偏移时间。默认是YES。
  • 属性isAutoSynchronizedWhenUserChangeLocalTime:在用户更改本地时间时是否自动同步。默认是YES。

自定义时间服务器

将其添加到项目文件名ntp.hosts中,每行包含一个时间服务器地址。如果文件不存在,则使用默认时间服务器。以下是一个ntp.hosts文件的示例

asia.pool.ntp.org
europe.pool.ntp.org
north-america.pool.ntp.org

关于此源

NHNetworkTime From ios ntp开源项目,由jbenet开发。NHNetworkTime修复了一个从原始源中获取错误时间的关键错误,并添加了更多改进。

  • 同步完成后发布通知
  • 属性使您知道同步是否完成
  • 将偏移时间保存在本地以供启动应用程序后立即使用,无需等待服务器
  • 当用户更改本地时间时自动同步

版权

NHNetworkTime是在Apache许可下发布的。有关详细信息,请参阅LICENSE。版权所有 © Nguyen Cong Huy