iOS应用中NTP的使用
2012-08-02 10:34
239 查看
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,方便今后使用。
在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,方便今后使用。
相关文章推荐
- iOS应用中NTP的使用
- iOS应用中NTP的使用
- iOS应用中NTP的使用
- iOS开发技巧:应用宏定义使用字体
- 使用plist固化iOS应用数据
- iOS 中使用 Keychain Services 在应用间共享数据
- 使用VIPER构建iOS应用
- iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
- iOS学习应用开发就业课_009:UIViewController的使用
- iOS 中如何添加应用自己的字体,使用萍方体
- 关于【2017 年1月1日开始iOS应用内必须使用https的问题】
- 使用Html5开发Android和iOS应用:HBuilder、Html5Plus、MUI
- 在 iOS 应用中使用 GPS
- 使用PhoneGap打包HTML成iOS应用
- iOS开发中使用文字图标iconfont的应用示例
- iOS开发中使用[[UIApplication sharedApplication] openURL:] 加载其它应用
- 在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
- iOS 9学习系列:如何使用ATS提高应用的安全性
- iOS应用程序安全(15)-使用iNalyzer对iOS应用进行静态分析
- iOS获取UUID,并使用keychain存储,解决应用删除后 uuid不统一问题