iOS In-App-Purchase取消是否反映在NSBundle.mainBundle()。appStoreReceiptURL

时间:2017-02-03 04:41:39

标签: ios in-app-purchase storekit auto-renewing receipt-validation

假设iOS用户购买了自动续订订阅。我知道NSBundle.mainBundle().appStoreReceiptURL显示了某种数字收据,我可以用它来验证购买和续订。

然后用户取消订阅。

问题

当用户取消订阅时,

  1. NSBundle.mainBundle().appStoreReceiptURL是否会立即反映该取消?
  2. 我对此持怀疑态度,因为NSBundle.mainBundle()用于提取应用程序中本地存储的内容。如果用户通过转到操作系统的设置取消订阅,并且会向Apple Server发送某种类型的通知,那么Apple Server应该以某种方式通知应用程序。

    1. 如果以某种方式NSBundle.mainBundle().appStoreReceiptURL立即反映取消。 Apple如何做到这一点?或者由我来实施协议以获取取消信息?

    2. 事实上,如果我确实需要运行协议,那么每次启动应用程序时都会运行其他应用程序吗?

1 个答案:

答案 0 :(得分:2)

用户不会取消订阅。他们关闭续订,因此订阅将不会在当前期间完成续订。如果仍然启用了自动续订,则会在下一期间的收据中添加新的应用内购买,但现在不会发生这种情况,因此您的应用应该确定当前没有订阅并删除访问权限适当的内容/功能。

Apple可以应用户的要求取消订阅。在这种情况下,应用内购买收据项目的cancellation_date字段将具有值,您的应用应该将其视为从未进行过购买。

您的应用应定期(至少在每次启动时)刷新应用程序收据并验证当前有效的订阅。