多个设备上的iOS iap恢复过程 - SKReceiptRefreshRequest或restoreCompletedTransactions等

时间:2017-05-21 19:47:59

标签: ios in-app-purchase restore subscriptions

我知道有很多信息,但我无法确定在设备之间恢复IAP订阅的正确方法是什么。显然,在挖掘网络之后,没有关于此的真正好的文档,人们不得不主要通过试验和错误来处理它。

我正准备用IAP订阅最终的第一个应用程序,并且在我准备上传它以供批准之前有一些疑问。看起来测试过程中的行为与生产过程中的行为完全不同,而我只是没有生产经验,无法确定究竟发生了什么。

我实施该流程的方式如下:

  1. 用户首次购买该商品,以便他/她进行付款并将交易添加到队列中。
  2. 当应用收到响应时,它会调用finishTransaction并验证收据(可以是本地或远程,但这是一个不同的问题)
  3. 续订到来时,队列会通知应用,应用再次致电finishTransaction并进行新的验证。
  4. 这在一台设备上运行良好,没有任何问题 但是,当我想要在其他设备上恢复这些购买时,续订通知可能不会作为收到通知调用的第一个设备finishTransaction发送,而所有其他设备都会错过它。

    然后我有两个选项 - 使用SKReceiptRefreshRequest刷新收据或使用restoreCompletedTransactions恢复购买。我根据之前的购买到期日期在某个时间制作其中一个,以检查用户是否未停止订阅。 (订阅取消是另一个主题 - 类似但现在我不介意)

    刷新过程看起来像我喜欢的那个,但至少在Sandbox中,它总是要求用户登录(两次,我不知道它是否正常,加上在沙盒中我找不到方法实现Touch ID)。然后,应用程序会收到一个新刷新的收据并完成验证过程,这很棒。

    第二种方法静默地请求新收据(这比以前更加优惠)但据我所知,它总是使新收据中的交易金额加倍,因为它为每个完成的收据进行了新的交易: / p>

      

    支付队列将为之前的每个交付新交易   已完成的可以恢复的交易。每笔交易包括   原始交易的副本。

    所以...我的问题是:

    1. 生产行为是否与SKReceiptRefreshRequest的沙箱相同 - 如果用户每次想要刷新收据时登录,并且集成Touch ID是否需要其他实施? 如果我有,请说周订阅,,这对用户来说会非常烦人。
    2. 如果我使用restoreCompletedTransactions,收据在某些时候会变得无用的交易吗? 如果用户再次假设一年周订阅并将其恢复到其他几个设备上,那么他们都将填写最终收据。
    3. 总体而言哪种方法更可取,每种方法的优缺点是什么。
    4. 非常感谢!

0 个答案:

没有答案