https://www.zhihu.com/question/21155589
1、通过开机运行时间计算开机时刻
ios和android都提供了一个方法:获取自开机到现在运行时间。就是利用这个方法来做时间校验。通过获取当前时间(有可能被修改)和开机运行时间,可以计算出开机时刻(前者减后者),如果一直保持开机状态,那么这个开机时刻应该是不变的。如果某次开机时刻算计算出来与上一次不同,那么就可以判断计时器出错。
2、记录开机时刻
第一次运行游戏时会把开机时刻记录下来,用于之后计算的对比。
3、联网时间修正
当用户时间异常,比如往后调了1个小时,计算出开机时刻与上次不同,此时需要联网修正时间。从网络上取得正确的当前时间,对比用户时间(有可能被修改),计算出时间差1个小时,记录这个时间差。之后每次获取用户当前时间的时候都要减去这个时间差,结果可以能当成正确的系统时间,再根据1的方法算出开机时刻就比较准确了。时间修正后会重设上次开机时刻做为新的参考值。
=========网上找到的,没有做实验,但是现在还真有不联网修改本地时间没办法增加进度的游戏。
作者:大菠萝
链接:https://www.zhihu.com/question/21155589/answer/253924139
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。