iOS应用中NTP的使用

Network Time Protocol是用来使时间同步化的一种协议,可以通过网络取得当前时间,而不依赖与于本地系统时间。

 

在iOS应用的开发过程中,经常会需要取得系统时间,对绝大多数的应用来说,[NSDate date]就已经足够了,但是单纯 

利用系统时间的弊端在于,系统时间是可以被用户随意修改的,当应用对时间的要求比较高的场合,系统时间就不那么可靠了。 

比如按期收费订阅等处理要求,虽然可以通过每次都向苹果发出支付请求来保证用户不会过期使用,但用户体验就会相当恶劣。 

当然也可以通过部署在网络上的业务服务器来提供时间的验证,但如果没有自己去部署业务服务器的条件,又该怎样保证时间的正确性呢? 

这种时候,NTP就有了用武之地。  


网络上NTP服务很多,通过iOS来访问NTP的开源方法也不少,我参照的是ios-ntp,虽然代码老了点,但仍然可以正常使用。 

使用方法很简单,github上也有简单介绍:  

  

1. 将解压出的ios-ntp.framework拷贝到项目目录并添加到工程中 

2.ios-ntp需要用到AyncUdpSocket,所以需要下载CocoaAsyncSocket 

3.将AyncUdpSocket.h、AyncUdpSocket.m、SynthesizeSingleton.h拷贝到工程中 

4.为工程添加CFNetwork.framework 

 

在代码中使用[NSDate networkDate];就可以取得依据UTP标准时间修正过的本地时间 

但是实际测试的时候发现,以上方法只能够得到依据UTP标准时间修正过的本地时间,当本地系统日期被修改的时候,这样的时间是没有意义的。 

需要对代码进行一定修改,就可以取得完整的网络标准时间,csdn上有现成的代码,可以参照《ntp客户端实现 for ios》 

可以直接把关键代码封装成framework,这样就可以很方便的使用了。 

已经封装好了一个NTP_Component.framework,方便今后使用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值