假设iOS用户购买了自动续订订阅。我知道NSBundle.mainBundle().appStoreReceiptURL
显示了某种数字收据,我可以用它来验证购买和续订。
然后用户取消订阅。
问题:
当用户取消订阅时,
NSBundle.mainBundle().appStoreReceiptURL
是否会立即反映该取消? 我对此持怀疑态度,因为NSBundle.mainBundle()
用于提取应用程序中本地存储的内容。如果用户通过转到操作系统的设置取消订阅,并且会向Apple Server发送某种类型的通知,那么Apple Server应该以某种方式通知应用程序。
如果以某种方式NSBundle.mainBundle().appStoreReceiptURL
立即反映取消。 Apple如何做到这一点?或者由我来实施协议以获取取消信息?
事实上,如果我确实需要运行协议,那么每次启动应用程序时都会运行其他应用程序吗?
答案 0 :(得分:2)
用户不会取消订阅。他们关闭续订,因此订阅将不会在当前期间完成续订。如果仍然启用了自动续订,则会在下一期间的收据中添加新的应用内购买,但现在不会发生这种情况,因此您的应用应该确定当前没有订阅并删除访问权限适当的内容/功能。
Apple可以应用户的要求取消订阅。在这种情况下,应用内购买收据项目的cancellation_date
字段将具有值,您的应用应该将其视为从未进行过购买。
您的应用应定期(至少在每次启动时)刷新应用程序收据并验证当前有效的订阅。