如何处理在应用程序生命周期内结束的自动续订订阅

How to handle auto-renewal subscription ending during app life time

如果用户有每周自动续订订阅 运行,当前周在 4:00 到期(然后它将续订)并且用户从 3:55 直到 4:10 例如,你打算如何处理它?

我注意到 paymentQueue(_:updatedTransactions:) 不会在应用程序生命周期内触发(也许我错了?),所以我无法获得通知我用户正在更新的新更新仍在订阅。

在这种情况下,我是否需要调用恢复购买来强制检测续订,或者我是否应该考虑用户仍在订阅直到应用被终止(因此在下一次启动时,将触发 paymentQueue) ?或者也许是第三种解决方案?

您可以通过注册一个计时器来完成此操作,并且 a) 触发恢复或 b) 重新启动应用程序或 c) 使用您的服务器进行验证,这会处理服务器到服务器的通知。

我不知道您正在开发哪种应用程序以及用户使用该应用程序的时间不能超过其订阅期限有多重要,而是强制用户在没有他的情况下输入他的凭据明确同意(a 点)或重新启动应用程序(b 点)将是糟糕的用户体验。因此,如果它很重要,那么您可能需要使用服务器到服务器的通知。否则让用户使用您的应用程序直到他关闭它并在下次启动时在您的设备上验证收据。

Server-to-server notifications are a service for auto-renewable subscriptions. The App Store sends notifications to your server of real-time changes in a subscription's status.

详情见here

得到 Apple StoreKit 工程师的官方答复:

Apple 认为这是一种边缘情况,建议您不要实时处理订阅到期(如果可能)。

这意味着,如果您的订阅可以将您的用户转变为高级用户,则只需在应用的整个生命周期内将高级标志保持为真(直到应用被用户或系统终止)。

下次重新启动该应用程序时,您可以依靠潜在的新 paymentQueue:updatedTransaction。