如何写出好的"时间有限的功能"在Android上?

时间:2014-09-19 17:40:18

标签: java android time-limiting

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

所以我的天真想法是,使用sharedPreference存储第一个发布时间,然后继续System时间检查此日期。

然而,用户可以简单地改变Android手机的系统时间,并使用这个"限制功能"无限期。我的应用程序也应该能够脱机工作,所以检查互联网时间似乎不是一个好主意。

有没有什么好的框架可以完成这种编码?

3 个答案:

答案 0 :(得分:2)

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

  

您需要unique ID of the device。首次使用应用程序时,您可以在远程数据库中注册它,并在其上添加时间戳。只需触发此功能,您只需检查服务器。

答案 1 :(得分:0)

您可以尝试将文件存储在应用的数据文件夹之外,这基本上意味着外部存储(如/sdcard)。就其本质而言,此目录是公共的,用户可以删除该文件。您必须应用一些加密并为该文件指定一个名称,该名称似乎不属于您的应用程序,或者有任何可能影响您应用程序功能使用的信息,并希望它不会#&# 39;用户以某种方式删除。

答案 2 :(得分:0)

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

首次启动应用时存储您的first launch date/time(即值不存在)。
每次发布​​时,还会存储current date/time(在您的设置中应该称为last launch date)。

开始时,首先检查current date of the device 是否比存储的last launch date更少 - 如果是,那么用户已更改日期/时间 - 或获得时间travel device :)在这种情况下,您可以显示一条警告消息,告诉用户行为,或者只是静默失败并阻止用户访问这些功能。

如果日期合适,请继续将值更新为新current date(以便将来启动),然后检查期间是否已过期,并根据需要提供该功能。

这应该可以脱机工作,除了已经设备设备并且可以修改sharedPreference中的值的用户 - 但它们应该是少数。要阻止root用户, 需要使用在线服务。

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