我正在制作的申请有5天的试用期。请告诉我在试用期结束后,最好的方式是什么,以显示警报或什么。我想使用排出更少电池并且效率更高的方法。以下是两个想法。
定时器:
Let fiveDays = 5 * 24 * 60 * 60
Timer.scheduledTimer(withTimeInterval: fiveDays, repeats: false, block: { (timer) in print("Hi!")})
DispatchQueue
Let fiveDays = 5 * 24 * 60 * 60
DispatchQueue.main.asyncAfter(deadline: .now() + fiveDays, execute: {
self.functionToCall()
})
请建议:
- 最好的方法是什么?是计时器还是 DispatchQueue
- 为什么这是最好的方法?
醇>
答案 0 :(得分:1)
在服务器端执行此操作会好得多。只需将设备ID注册到服务器上,然后在应用程序启动时检查该设备是否已注册5天。这将是完成您想要做的事情的最佳方法。
答案 1 :(得分:1)
首次启动时将日期设置为UserDefaults
。
每次发布后比较日期。
我的建议是在服务器端进行检查。
答案 2 :(得分:1)
如果没有设备上的持久性,任何人都无法工作,即使持久性也不是一个好主意。
最好的方法是在用户首次登录时将初始开始日期保存到设备,然后在每次后续登录时检查该日期,以查看是否已过了5天。
答案 3 :(得分:1)
您希望使用的两种方法都没有多大用处。 你可以用2种方法做到这一点。
1)将所有用户信息存储在您的服务器中,但为了做到这一点,您可能需要先注册您的用户,然后在应用程序端根据您的要求在试用期结束时禁用某些功能或整个应用程序。 / p>
2)如果您不想使用后端服务器,那么您可以在设备钥匙串中存储设备唯一ID,然后在用户卸载然后再次安装时检索它,这样您就可以找到使用之前删除了应用程序或不要检查您的试用期。
由于
答案 4 :(得分:0)
以下是跟踪申请时间段的选项。但是,通过重新安装/更改设备时间,可以轻松拆除这两种方式。
解决方案:为了克服上述问题,我们可以通过在Keychain
中保留记录并使用time online reference
来跟踪试用期,这需要我们制作API call(有很多这样的在线服务可以为您提供精确的服务器时间和API命中)。