我希望用户在特定的有限时间内尝试某些功能,例如安装后2周(之后他们可以购买)。
所以我的天真想法是,使用sharedPreference
存储第一个发布时间,然后继续System
时间检查此日期。
然而,用户可以简单地改变Android手机的系统时间,并使用这个"限制功能"无限期。我的应用程序也应该能够脱机工作,所以检查互联网时间似乎不是一个好主意。
有没有什么好的框架可以完成这种编码?
答案 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用户, 需要使用在线服务。
此外,只是警告说,当用户旅行时(跨越时区),这可能会导致误报。但是你应该能够通过检查时区(如果需要)来处理这个特殊情况。