https://www.zhihu.com/question/21155589
1、通過開機運行時間計算開機時刻
ios和android都提供了一個方法:獲取自開機到現在運行時間。就是利用這個方法來做時間校驗。通過獲取當前時間(有可能被修改)和開機運行時間,可以計算出開機時刻(前者減后者),如果一直保持開機狀態,那么這個開機時刻應該是不變的。如果某次開機時刻算計算出來與上一次不同,那么就可以判斷計時器出錯。
2、記錄開機時刻
第一次運行游戲時會把開機時刻記錄下來,用於之后計算的對比。
3、聯網時間修正
當用戶時間異常,比如往后調了1個小時,計算出開機時刻與上次不同,此時需要聯網修正時間。從網絡上取得正確的當前時間,對比用戶時間(有可能被修改),計算出時間差1個小時,記錄這個時間差。之后每次獲取用戶當前時間的時候都要減去這個時間差,結果可以能當成正確的系統時間,再根據1的方法算出開機時刻就比較准確了。時間修正后會重設上次開機時刻做為新的參考值。
=========網上找到的,沒有做實驗,但是現在還真有不聯網修改本地時間沒辦法增加進度的游戲。
作者:大菠蘿
鏈接:https://www.zhihu.com/question/21155589/answer/253924139
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。