IOS 自动续订订阅通知处理

IOS auto-renew subscriptions notification handling

美好的一天!我正在尝试实现自动续订订阅的通知,整个系统的某些部分对我来说并不清楚。你能帮忙吗?

首先,当用户创建订阅时,我会从用户的设备获取收据,对其进行验证并在数据库中创建包含所有需要信息的记录。现在,通知正在发送到服务器。

  1. INITIAL_BUY 通知 - 它什么时候来,为什么?我刚收到设备的收据,验证了它,我很高兴。为什么我需要它?

  2. 如果我错了请纠正我,这部分我不清楚,当用户 UPGRADES 订阅级别时,我收到 的取消通知oldSubscriptionnewSubscription 的新购买收据,对吧? 所以理论上的问题是 - 如果在我的服务器端 oldSubscription 中可用的内容和 newSubscription 中可用的内容与我得到 [=35= 时的实体不同oldSubscription 的 ]CANCEL 我只是拒绝用户访问 oldSubscription 内容,当我收到客户的回执时,我创建 newSubscription 可以访问新内容,对吗?

  3. 降级交叉。据我所知,我得到 DID_CHANGE_RENEWAL_PREFDID_CHANGE_RENEWAL_STATUS。因此,我会收到此订阅的通知 auto_renew_status ,当付费期到期时,我会收到用户设备的收据,其中包含有关新购买的信息?或者我必须弄清楚如何处理 DOWNGRADECROSSGRADE 只有 DID_CHANGE_RENEWAL_PREFDID_CHANGE_RENEWAL_STATUS 条通知?

谢谢

服务器收据验证的问题在于,方法不止一种。实现这一点的可能性无穷无尽,这取决于您使用订阅的用例以及您希望应用程序和服务器之间的通信方式。

在你的第二段中是这些可能性的第一个例子:只有当你以这种方式实现时,你的服务器才会从设备获取收据。此外,也许您仅根据通知而不是发送回执来更新数据库。你看,这完全取决于你;-)

关于您的问题:

1)

Occurs at the user’s initial purchase of the subscription.

documentation

  1. 理论上这是正确的,但您描述的用例不是升级。如果更好的订阅不包含较低订阅的内容,那就奇怪了。

  2. 降级或交叉升级没什么好处理的。通知仅告诉您下一次自动续订会有变化。因为,在下一次自动续订之前,用户仍然有资格访问更好的内容。更好的订阅到期后,您将收到一个正常的 DID_RENEW,其中包含降级或 crsssgrade 产品 ID。