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