使用iCloud进行恢复的非可续订应用程序内购买

时间:2014-02-08 07:30:37

标签: ios iphone xcode ios7 in-app-purchase

我正在创建一个我有应用内购买功能的应用。我使用不可更新类型的订阅,但我必须支持在多个设备中恢复订阅。

在浏览了多个文档之后,我发现使用iCloud是实现它的更好方式,并为用户的多个设备提供订阅内容。最后,我决定实施以下设计:

  
      
  1. 用户浏览应用
  2.   
  3. 点击应用程序内购买按钮选项
  4.   
  5. 检查iCloud可用性

         
        
    1. iCloud可用:

           
          
      1. 继续以通常的方式购买
      2.   
    2.   
    3. iCloud不可用:

           
          
      1. 显示警报视图:“登录到其他设备上访问订阅内容所需的iCloud”,选项“确定”并且   “仍然继续”

             
            
        1. 单击“确定”:

               
              
          1. 保持在同一页面
          2.   
        2.   
        3. 点击“仍然继续”:

               
              
          1. 继续购买
          2.   
          3. 如果已购买并且iCloud可用,请更新iCloud收据
          4.   
        4.   
      2.   
    4.   
  6.   
  7. 成功购买后,我们会收到交易收据。我们将此收据存储在iCloud中(当时iCloud中的一次性商店)   购买)使用键值存储以及用户默认值

  8.   
  9. 购买成功。

  10.   
  11. 用户从其他设备启动应用

  12.   
  13. 检查用户默认值中的任何交易收据。如果可用,请验证并相应地进行
  14.   
  15. 如果用户默认值中没有可用的收据,请检查iCloud可用性

         
        
    1. iCloud可用:

           
          
      1. 检查是否有任何交易收据
      2.   
      3. 如果可用,请验证收据。如果收据有效,请提供订阅内容
      4.   
      5. 如果不可用,则无需采取任何措施并正常进行
      6.   
    2.   
    3. iCloud不可用:

           
          
      1. 显示提醒视图:“请登录您的iCloud帐户以享受您的订阅内容(如果有)”选项“确定”
      2.   
      3. 在应用程序内部,用户打开选项“订阅HD添加”,将检查他的订阅
      4.   
    4.   
  16.   

问题:

  1. 用户购买应用程序时无需登录iCloud
  2. 从其他设备启动应用
  3. 他无法获得订阅的内容
  4. 考虑到所有测试场景,以完美方式处理此场景的唯一方法是将用户的iCloud凭据存储到用户默认值中,我不确定是否可以完成/建议/允许。任何建议都是最受欢迎的。

    另外,我需要人们对上述步骤的看法,认为这是否是正确的进行方式。请建议我是否可以改进它或者可以有更好的方法。

1 个答案:

答案 0 :(得分:0)

我创建了一个使用iCloud NSUbiquitousKeyValueStore(具有类似NSUserDefaults类似选择器)的应用来同步IAP项目的耗材类型。 您可以在Github上查看像MKiCloudSync一样的回购,看看它是如何工作的。

使用NSUbiquitousKeyValueStore时,App无需知道iDevices的iCloud状态。 在我的情况下,如果有人拥有2台设备,设备1有iCloud登录但设备2没有,我会忽略设备2.