我正在创建一个我有应用内购买功能的应用。我使用不可更新类型的订阅,但我必须支持在多个设备中恢复订阅。
在浏览了多个文档之后,我发现使用iCloud是实现它的更好方式,并为用户的多个设备提供订阅内容。最后,我决定实施以下设计:
- 用户浏览应用
- 点击应用程序内购买按钮选项
检查iCloud可用性
iCloud可用:
- 继续以通常的方式购买
iCloud不可用:
显示警报视图:“登录到其他设备上访问订阅内容所需的iCloud”,选项“确定”并且 “仍然继续”
单击“确定”:
- 保持在同一页面
点击“仍然继续”:
- 继续购买
- 如果已购买并且iCloud可用,请更新iCloud收据
成功购买后,我们会收到交易收据。我们将此收据存储在iCloud中(当时iCloud中的一次性商店) 购买)使用键值存储以及用户默认值
购买成功。
用户从其他设备启动应用
- 检查用户默认值中的任何交易收据。如果可用,请验证并相应地进行
- 醇>
如果用户默认值中没有可用的收据,请检查iCloud可用性
iCloud可用:
- 检查是否有任何交易收据
- 如果可用,请验证收据。如果收据有效,请提供订阅内容
- 如果不可用,则无需采取任何措施并正常进行
iCloud不可用:
- 显示提醒视图:“请登录您的iCloud帐户以享受您的订阅内容(如果有)”选项“确定”
- 在应用程序内部,用户打开选项“订阅HD添加”,将检查他的订阅
问题:
考虑到所有测试场景,以完美方式处理此场景的唯一方法是将用户的iCloud凭据存储到用户默认值中,我不确定是否可以完成/建议/允许。任何建议都是最受欢迎的。
另外,我需要人们对上述步骤的看法,认为这是否是正确的进行方式。请建议我是否可以改进它或者可以有更好的方法。
答案 0 :(得分:0)
我创建了一个使用iCloud NSUbiquitousKeyValueStore
(具有类似NSUserDefaults
类似选择器)的应用来同步IAP项目的耗材类型。
您可以在Github上查看像MKiCloudSync一样的回购,看看它是如何工作的。
使用NSUbiquitousKeyValueStore
时,App无需知道iDevices的iCloud状态。
在我的情况下,如果有人拥有2台设备,设备1有iCloud登录但设备2没有,我会忽略设备2.