我在我的 iOS 应用程序中实现了可消费的应用程序内购买。用户必须付费才能看到内容,内容将在 24 小时后过期。
一旦用户付款,我将向我的服务器发送一个当前日期
和过期日期
。现在,当我为特定登录用户获取内容列表时,我的服务器将返回 purchase date
。例如,如果用户 Patrick 登录应用程序,他将能够看到内容列表。在该 Web 服务中,我还将获取该用户的到期日期,并根据该时间显示到期时间。如果到期时间已过,它将在每个内容列表单元格中显示购买按钮。
我的应用程序最关心的是用户从设备更改了他的当前日期。如果用户定期更改他/她的当前日期并且从不让他/她的设备有机会到达到期日期
,他/她将永远可以访问内容。
克服这种情况的最佳解决方案是什么?这就是我一直被卡住的地方。
最佳答案
如果您可以要求用户在线,那么我会忽略设备时间并使用您的服务器进行所有验证。
如果您支持离线访问内容,您将需要忍受用户不断调回他们的时钟并且从不在在线时使用您的应用程序的可能性。这似乎会削弱他们设备的一般功能,所以我个人不会过分担心。
所以无论哪种方式,如果可能的话,请推迟到您的服务器时间,否则就使用设备时钟。
编辑
关于线下案例的更多细节:
- 您唯一可以访问的时钟是设备时钟。
- 当用户不在您的应用中时,他们可以控制他们的时钟。
- 用户无法仅针对您的应用有选择地离线,因此如果选择离线,他们将无法使用其设备的任何在线功能。
- 同样,更改时钟也是一个系统范围的设置,会影响他们的提醒和他们看时间的能力。
出于所有这些原因,假设用户不会仅仅为了获取一个应用程序的内容而降低其设备的功能是有道理的,在我看来,这不值得您担心。如果根据时间限制内容至关重要,您应该将连接作为一项要求。
关于ios - 如果用户在基于时间的 InApp 购买订阅中更改设备当前日期怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31470170/