在我的应用程序中,我希望用户能够免费使用7天的离线使用,但希望用户在完成7天后就可以在线连接并购买订阅服务。所以基本上,我想在安装7天后把他锁在外面。问题是用户可以很好地改变系统时间并欺骗应用程序。此外,我不能使用服务器作为权威,因为应用程序也应该完全脱机工作,除了购买订阅时间。
我可以运行一个后台服务来跟踪任何系统时间的变化,但我希望避免这样做。是否有一个直接的解决方案,可以工作,即使设备完全离线7天。
发布于 2016-04-07 11:35:23
您可以将当前时间保存在共享首选项中,并在每次取样时进行比较。如果您得到一个较旧的示例,则用户向后更改时间。
发布于 2016-04-07 11:34:55
使用远程时钟,即使是简单的读取服务器的时间从移动在期望的时间间隔,并使用这些号码为您的应用程序的时钟
发布于 2016-04-07 13:10:18
因此,这是我计划如何解决这个问题,虽然这不是不可动摇的,但将对大多数用户工作。
因此,在签署试用协议时,我会获得网络时间,并将其作为start_time存储在首选项中。接下来,在每个应用程序启动和应用程序恢复时,我读取current_time并写入prefs。一旦pref的current_time大于设备的时间,我们就锁定应用程序。一旦没有首选项,我们就按照@Zach的建议请求用户在线。
为了使首选项编辑对根设备人员有点不方便,我将数据以加密形式存储在prefs中。
这仍然不可能是不可打破的,因为人们可以解压缩apk,阅读模糊的代码来猜测算法和密钥,但是我认为应用程序中的内容的价值对于那些经历了那么多痛苦的人来说并没有那么高。
https://stackoverflow.com/questions/36474827
复制相似问题