#1
我正在开发其中包含非续订订阅的 iOS 应用程序。我想让订阅在用户的所有设备上可用,并让用户恢复购买。
正如苹果文档中所说:
对于非续订订阅,请使用 iCloud 或您自己的服务器来保持永久记录。
我不使用自己的服务器,因为我的应用程序目前仅适用于 iOS。所以 iCloud 似乎是更简单的解决方案。
在观看和阅读了很多关于 iCloud 的 WWDC 视频和文档之后,对我来说最好的解决方案似乎是 CloudKit,因为键值存储限制为 1MB,而且我很有可能获得比每个用户更大的总数据大小(之后一年不同的购买,例如)。
问题是:到目前为止我是对的吗?
#2
我正在使用 RMStore 库进行购买。正如文档中所说,RMStore 没有对 iCloud 的事务持久性的参考实现,我在互联网上找不到任何示例,所以我必须自己从头开始。
摆在我面前的第一个问题是:如果在用户购买订阅后将收据同步到 iCloud 时出现问题怎么办?例如:用户购买了订阅,将其同步到 iCloud 时出错,关闭应用程序,仅此而已。这是一个真实的场景吗?对于非续订订阅,Apple 不会将收据存储在任何地方,因此我全权负责为我的用户交付和保存它。交易完成后,我是否应该立即将收据保存NSUserDefaults
在钥匙串中或钥匙串中,以便下次用户启动应用程序时能够将同步数据与本地数据进行比较?或者也许我不应该在收据同步之前“完成交易”?我找不到任何来自 Apple 的指南...
#3
下一个明显的问题是:用户可以清除我的应用程序的 iCloud 私人存储空间吗?用户可以以某种方式删除存储在 iCloud 收据中,从而删除有关他购买的所有信息吗?如果是 - 我应该如何处理?如果这种情况是真实的,我无法恢复他的购买并为他打开应用程序的功能,直到他再次购买订阅。
先感谢您。