这个想法是无论风雨无阻,潮湿还是晴天,用户都必须付出所有代价。
来自苹果:
Store Kit 提供内置功能来恢复非消耗品、自动更新订阅和免费订阅的交易
对于这些交易,Apple Store Kit 有很好的内置工具。我想专注于其他类型(特别是消耗品)。唯一的交易信息是我们在成功购买后通过 Store Kit 收到的标识符和收据数据。我们的应用程序使用服务器端模型向其交付产品。但是仍然存在很多丢失购买数据的情况,例如如果服务器在用户通过 App Store 进行购买时放下,因此无法将收据发送到服务器以完成验证过程。
当前的解决方法是:
- 服务器返回产品标识符列表
- 用户选择一个;应用程序将其标识符保存在设备上(通过 SQLite 或 Core Data)。标准 Apple Store 交易流程紧随其后。
- 在成功的情况下,应用程序将收据数据连同其标识符一起保存在设备上并将其发送到服务器。如果出现故障或取消,则立即从设备中删除标识符。
- 如果服务器的响应正常,则应用程序会从设备中删除带有收据数据的标识符。否则它将定期向服务器发送请求,直到成功响应为止。
但是这种方法仍然存在漏洞。例如,用户可以在不等待交易交付到服务器的设备上删除应用程序,因此根本不会有任何关于他购买的证据。
你的建议?