默认的
总之,我正在寻找一个算法,它可以实现两个目标:
虽然这种方法部分地解决了第一个目标,但它仍然需要用户每月连接一次应用程序,因此它对于我们的(至少之一的)用户不起作用。
以下算法实现了第一个目标,但我不知道第二个目标如何。欢迎提出指出此算法的弱点或提出其他方法的任何评论。在宽限期结束后,在允许应用程序正常运行之前,坚持要求第二个已授权的响应。
收到第二个已授权的响应后,永久启用应用程序的所有功能,并且不再进行检查。
如果在任何时候收到未经许可的响应,则永久禁用完整功能。(当然,用户可以通过删除所有应用数据来回到步骤1。)
ServerManagedPolicy
在 Google 提供的许可证验证库 中依靠服务器响应来确定许可证重新验证的时间间隔。这导致需要每隔几天进行重新验证,永无止境。这不仅对用户来说很麻烦,而且对于长时间没有连接的用户来说可能是一个严重的问题。(我们刚刚收到一名用户的询问,他预计将在数周内没有互联网连接,这也是提出这个问题的原因。)总之,我正在寻找一个算法,它可以实现两个目标:
- 与
ServerManagedPolicy
相比,大大减少了网络连接要求; - 提供相同水平的防盗版保护。
虽然这种方法部分地解决了第一个目标,但它仍然需要用户每月连接一次应用程序,因此它对于我们的(至少之一的)用户不起作用。
以下算法实现了第一个目标,但我不知道第二个目标如何。欢迎提出指出此算法的弱点或提出其他方法的任何评论。
- 首次运行时,执行许可证检查,并在提供完整功能之前坚持获得LICENSED响应。一旦收到,设置相对较短的到期期限(但比 Google Play 提供的退款期限长,目前为15分钟)。还要注册几天的优雅期。
- 应用程序将在许可证到期后再次开始检查。如果连接失败(飞行模式等),则仍将正常工作,直到优雅期过期。
其他注意事项:
- 有人建议放弃第一次许可检查,并等待退货期满后再进行许可检查。 坚持要求第一个已授权的响应的目的是防止利用漏洞,即在许可检查失败后,用户只需停止应用程序进程,清除应用程序数据并重新启动应用程序。 (即使每次仅能使用15分钟,该应用程序也提供价值。)
- 坚持要求第二个已授权的响应的目的是解决购买-运行-备份-退货-恢复漏洞。
- 我不是在询问回调式许可检查是否是一个好主意(这是Google提供的替代其已弃用的版权保护机制的方案)。 我也很清楚,没有反盗版保护是绝对可靠的,整个Google许可机制都可以被规避(在这种情况下,关于策略算法设计的所有问题都是无关紧要的)。 本问题的主要点是相对风险(对我们)和好处(对用户)的比较,即相对于其他策略(如
ServerManagedPolicy
),上述算法的优缺点。