SwiftUI自动续订订阅流程

时间:2020-06-22 10:43:59

标签: swift in-app-purchase subscription auto-renewable

我已在我的应用程序中实现了应用程序内购买自动更新订阅,但是由于该应用程序不断要求iTunes登录,因此我不确定自己是否正确完成了操作。

在用户案例中:我订阅了按月付款,并且我的第一个月结束了,希望它可以自动续订。

我目前的流程如下...

  1. (在应用程序委托中)支票收据有效

  2. (如果收据有效)检查所有收据的最新有效期

  3. (如果已过期-在第一个月结束后似乎是这种情况),请致电SKReceiptRefreshRequest以获取最新的收据。我对此进行了计数检查,否则它将陷入永无止境的循环中。

  4. 进行最后检查,以查看最新收据是否已过期。

这是解决此问题的正确方法吗?如果不能,您能否对此有所启发?

除了烦恼iTunes登录之外,一切似乎都工作正常。我猜只有每月一次在Sandbox环境之外,这还算不错,但是只是要确保我正确执行了此操作。

谢谢

1 个答案:

答案 0 :(得分:1)

请勿调用SKReceiptRefreshRequest。该请求通常仅用于“还原购买”机制。这就是为什么您要登录对话的原因。只要您是付款队列https://developer.apple.com/documentation/storekit/skpaymentqueue/1506042-add的观察者,StoreKit就会返回给您,因此您应在应用启动时将自己添加到付款队列中。然后,使该对象停止运行,以监听整个应用程序生命周期中的更改。您将在updatedTransactions回调https://developer.apple.com/documentation/storekit/skpaymenttransactionobserver/1506107-paymentqueue

中收到续订

第二,您应该在自己的服务器上而不是在客户端上进行收据验证,因为它很容易受到MITM攻击。您还可以轻松地控制那里的逻辑,并接收最适合管理订阅的服务器到服务器的通知。