工作原理 - 该应用是跨平台的订阅服务。在 iPhone 上,初始购买可获得 30 天完整功能,然后在 30 天后,您需要通过应用内购买订阅才能执行某些操作。
我的需求 - 我需要知道是否是首次运行,以便将用户信息添加到数据库中。或者因为它是跨平台的,他们可能已经支付了订阅费,所以我需要向用户已有的订阅中添加 30 天。
当前实现 - 目前,我将 identifierForVendor 存储在远程数据库中,并在 NSUserDefaults 中检查一个布尔值来确定:1. 是否是首次运行,2. 是否是首次运行允许用户将自己添加到数据库以获取 30 天的完整使用权,或者向其现有订阅中添加 30 天。
问题所在 - 问题在于,如果用户删除应用程序然后重新安装它,则 NSUserDefaults 也将被删除,并且 identifierForVendor 将更改,这将允许用户通过删除和重新安装应用程序来再次获取 30 天的免费订阅。
理想解决方案 - 最初我想为应用程序设置订阅,但我不知道如何在应用程序最初购买时检查收据并将用户插入远程数据库。此外,我也不知道如何设置不是应用内购买的订阅。我还考虑过使应用程序免费,然后他们可以使用应用内购买购买服务,但如果无法连接到远程服务器来首先构建数据,则该应用程序没有用处。
底线我想采取以下措施之一
- 在第一次购买时进行订阅(我需要能够检测购买是否有效,以便将用户信息记录到远程数据库中)
- 将应用程序免费,然后使用应用内购买添加订阅(允许有一个什么都做不了直到订阅的免费应用程序是可以接受的吗?)
- 保持现状(但找到更长久的解决方案来解决 identifierForVendor,而 identifierForAdvertising 也不可行,因为它可以被关闭)