NHNetworkTime, 一个网络时间协议( NTP ) 客户端,更新正确的时间

分享于 

7分钟阅读

GitHub

 
A network time protocol client (and an application testbed for iOS)
  • 源代码名称:NHNetworkTime
  • 源代码网址:http://www.github.com/huynguyencong/NHNetworkTime
  • NHNetworkTime源代码文档
  • NHNetworkTime源代码下载
  • Git URL:
    git://www.github.com/huynguyencong/NHNetworkTime.git
    Git Clone代码到本地:
    git clone http://www.github.com/huynguyencong/NHNetworkTime
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/huynguyencong/NHNetworkTime
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    NHNetworkTime

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

    最早的iPhone,iTouch或者iPad的时钟没有与正确的时间同步。 在从电话系统获取时间的情况下,有一个设置可以同步到电话公司时间。

    这里外,用户可能会更改设备时间,严重影响依赖正确时间的应用程序,或者设置设备时钟。

    这个项目包含提供时间从使用简单网络时间协议的标准时间服务器( SNTP: RFC 5905 )的实现不是严格的,因为目标是将时间精确提高到几十毫秒,而不是微秒。

    使用NTP协议的计算机通常在连续的低级别任务中使用它来跟踪持续的时间。 一个 background 应用程序使用一组时间服务器的时间估计来确定这些值的最佳时间。 iOS应用程序不同,更可以能需要一次,快速估计时间。

    兼容
    • iOS 7和更高版本。
    • Objective C,以及带有桥接 header的Swift ( 阅读 below 指南)

    用法

    Cocoapod

    将 below 行添加到 Podfile:

    
    pod NHNetworkTime
    
    
    
    

    然后在终端中运行 below 命令以安装:
    pod install

    注:如果 上面 pod不起作用,请尝试在Podfile中使用 below pod定义:
    pod 'NHNetworkTime', :git => 'https://github.com/huynguyencong/NHNetworkTime.git'

    手册

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

    :简单易用

    在你希望获得时间时导入这里选项:

    
    #import"NHNetworkTime.h"
    
    
    
    

    呼叫 synchronize- application: didFinishLaunchingWithOptions: 要在启动应用程序时从服务器更新时间:

    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    
     [[NHNetworkClock sharedNetworkClock] synchronize];
    
    
     return YES;
    
    
    }
    
    
    
    

    然后,你可以在源代码中的任何位置完成同步时获得网络时间:

    
    NSDate *networkDate = [NSDate networkDate];
    
    
    
    

    或者添加通知在更新时在任何位置更新用户界面:

    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkTimeSyncCompleteNotification:) name:kNHNetworkTimeSyncCompleteNotification object:nil];
    
    
    
    
    Swift

    #####Use use_frameworks!

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

    
    @import NHNetworkTime
    
    
    
    
    不使用 use_frameworks!

    NHNetworkTime.h 导入到桥 header file: 中

    
    #import <NHNetworkTime.h>
    
    
    
    
    你的代码

    现在,你可以在代码中调用 below 代码:

    
    NHNetworkClock.sharedNetworkClock().synchronize()
    
    
    
    

    还有:

    
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("syncCompleteNotification"), name: kNHNetworkTimeSyncCompleteNotification, object: nil)
    
    
    
    
    NHNetworkClock更多
    • 使用 NSNotifcationCenter 添加观察者 kNHNetworkTimeSyncCompleteNotification 在时间同步完成时接收通知
    • 属性 isSynchronized: 检查网络时间同步或者不同步
    • 属性 shouldUseSavedSynchronizedTime: 应该使用上次同步中保存的偏移时间,然后再从服务器同步。 默认为是。
    • 属性 isAutoSynchronizedWhenUserChangeLocalTime :当用户更改本地时间时自动同步。 默认为是。
    自定义时间服务器

    添加到项目文件 NAME ntp.hosts,其中内容为每一行的时间服务器地址。 如果文件不存在,它将使用默认时间服务器。 ntp.hosts file: 示例

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

    关于这个源

    NHNetworkTime是从jbenet的ntp开源构建的。 NHNetworkTime修复了一个关键 Bug 从原始源获取错误时间,并增加了更多改进:

    • 同步完成后发送通知
    • 属性使你知道同步是否完成
    • 在启动应用程序后立即保存本地的偏移时间,不必等待服务器
    • 用户更改本地时间时自动同步

    许可证

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


    时间  network  proto  protocol  protoc  NTP  
    相关文章