0

我希望用户在特定的有限时间内尝试某些功能,比如安装后 2 周(之后他们可以购买)。

所以我的幼稚想法是,比如说,用来sharedPreference存储第一次启动时间,然后不断检查这个日期和System时间。

但是,用户可以简单地更改安卓手机的系统时间,并无限期地使用这个“受限功能”。我的应用程序也应该能够离线工作,因此检查互联网时间似乎不是一个好主意。

有没有什么好的框架如何完成这种编码?

4

3 回答 3

2

您必须使用远程服务器和数据库。系统时钟不是唯一的调整,用户可以简单地清除与应用程序相关的数据。

您需要设备的唯一 ID。在第一次使用应用程序时,您在远程数据库中注册它并带有时间戳。您只需在触发此功能时检查服务器。

于 2014-09-19T17:43:18.650 回答
0

这可以通过跟踪两个值(存储在 中sharedPreference)来完成。

在应用程序首次启动时存储您first launch date/time的值(即该值不存在)。
每次启动时还存储current date/time(在您的设置中应该称为类似的名称last launch date)。

开始时,首先检查是否current date of the device小于存储last launch date- 如果是,则用户已更改日期/时间 - 或购买了时间旅行设备 :) 在这种情况下,您可以显示警告消息告诉用户行为,或者只是静默失败并阻止用户访问功能。

如果日期没问题,请继续将值更新为新值current date(以供将来发布),然后检查期限是否已过期,并根据需要提供该功能。

这应该可以离线工作,除了已经植根他们的设备并且可以修改值的用户sharedPreference- 但他们应该是少数。为了防止 root 用户,您需要使用在线服务。

也只是一个警告,当用户旅行(跨越时区)时,这可能会导致误报。但是您应该能够通过检查时区(如果需要)来处理这种特殊情况。

于 2014-09-20T14:27:30.603 回答
0

您可以尝试将文件存储在应用程序的数据文件夹之外,这基本上意味着外部存储(如/sdcard)。就其本质而言,该目录是公开的,用户可以删除该文件。您必须应用一些加密,并为文件命名,使其看起来不属于您的应用程序或包含任何会影响应用程序功能使用的信息,并希望它不会被用户以某种方式删除。

于 2014-09-19T17:46:43.687 回答