1

我已经在我的应用程序中实现了应用内购买自动续订订阅,但我不确定我是否正确地完成了它,因为应用程序不断要求登录 iTunes。

在用户案例中:我订阅了每月付款,并且我的第一个月已经结束,并希望它能够自动续订。

我目前的流程如下......

  1. (在 App Delegate 中)检查收据有效

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

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

  4. 做最后检查以查看最新收据是否实际上已过期。

这是解决这个问题的正确方法吗?如果没有,您能否对此有所了解?

除了 iTunes 登录的烦恼之外,这一切似乎都运行良好。我想在沙盒环境之外每月只有一次,这还不错,但只是想确保我做对了。

谢谢

4

1 回答 1

1

不要调用 SKReceiptRefreshRequest。这个请求通常只针对“恢复购买”机制。这就是为什么您要在对话中登录。只要您是支付队列的观察者,StoreKit 就会返回给您:https ://developer.apple.com/documentation/storekit/skpaymentqueue/1506042-add所以您应该在应用启动时将自己添加到支付队列中。然后让该对象保持一致以监听整个应用生命周期的变化。您将在 updatedTransactions 回调中收到续订https://developer.apple.com/documentation/storekit/skpaymenttransactionobserver/1506107-paymentqueue

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

于 2020-06-22T13:34:19.017 回答