iOS應用中NTP的使用

2021-09-25 20:04:30 字數 936 閱讀 1276

原文

network time protocol是用來使

時間同步化的一種協議,可以通過網路取得當前時間,而不依賴與於本地系統時間。

在ios應用的開發過程中,經常會需要取得系統時間,對絕大多數的應用來說,[nsdate date]就已經足夠了,但是單純 

利用系統時間的弊端在於,系統時間是可以被使用者隨意修改的,當應用對時間的要求比較高的場合,系統時間就不那麼可靠了。 

比如按期收費訂閱等處理要求,雖然可以通過每次都向蘋果發出支付請求來保證使用者不會過期使用,但使用者體驗就會相當惡劣。 

當然也可以通過部署在網路上的業務伺服器來提供時間的驗證,但如果沒有自己去部署業務伺服器的條件,又該怎樣保證時間的正確性呢? 

這種時候,ntp就有了用武之地。  

網路上ntp服務很多,通過ios來訪問ntp的開源方法也不少,我參照的是ios-ntp,雖然**老了點,但仍然可以正常使用。 

使用方法很簡單,github上也有簡單介紹:  

1. 將解壓出的ios-ntp.framework拷貝到專案目錄並新增到工程中 

3.將ayncudpsocket.h、ayncudpsocket.m、synthesizesingleton.h拷貝到工程中 

4.為工程新增cfnetwork.framework 

在**中使用[nsdate networkdate];就可以取得依據utp標準時間修正過的本地時間 

但是實際測試的時候發現,以上方法只能夠得到依據utp標準時間修正過的本地時間,當本地系統日期被修改的時候,這樣的時間是沒有意義的。 

需要對**進行一定修改,就可以取得完整的網路標準時間,csdn上有現成的**,可以參照《ntp客戶端實現 for ios》 

可以直接把關鍵**封裝成framework,這樣就可以很方便的使用了。 

已經封裝好了乙個ntp_component.framework,方便今後使用。

iOS應用中NTP的使用

原文 network time protocol是用來使 時間同步化的一種協議,可以通過網路取得當前時間,而不依賴與於本地系統時間。在ios應用的開發過程中,經常會需要取得系統時間,對絕大多數的應用來說,nsdate date 就已經足夠了,但是單純 利用系統時間的弊端在於,系統時間是可以被使用者隨...

iOS應用中NTP的使用

network time protocol是用來使 時間同步化的一種協議,可以通過網路取得當前時間,而不依賴與於本地系統時間。在ios應用的開發過程中,經常會需要取得系統時間,對絕大多數的應用來說,nsdate date 就已經足夠了,但是單純 利用系統時間的弊端在於,系統時間是可以被使用者隨意修改...

iOS中鎖的應用

synchronized 這玩意是對括號內的內容進行加鎖,保證執行緒安全,一般用在偽單例的使用中 nslock 顧名思義,就是乙個簡單的鎖,通過alloc建立後使用,具備lock,unlock以及lockbeforedate方法.其中最後乙個方法表示在指定時間之前。nsconditionlock 條...