【发布时间】:2017-04-12 05:15:17
【问题描述】:
我正在尝试在我的 macOS 应用程序中实现 StoreKit 的自动更新订阅功能。
在阅读了几十页并检查了示例之后,我了解了所有内容是如何组合在一起的,但无法使其正常工作。
我想做什么:
- 应用启动后,通过评估本地收据来检查是否有可用的订阅。我正在专门检查收据的任何In-App Purchase field entries 中的取消日期是否不可用,以及订阅到期日期是否在将来。
- 如果没有(有效)订阅可用,我将使用 StoreKit 的 API 购买订阅。
这两种情况都运行良好,因为当首次购买订阅时,此流程完美运行。但是,订阅到期日期结束后,收据不会自动更新。我希望此收据会定期更新,如Auto-renewing subscription and app receipt 所示。结果,上述第一步失败,因为某个时间点的到期日期在历史记录中,因此被视为已过期。
我觉得奇怪的两件事:
- 我的 SKPaymentTransactionObserver 实例仅在购买订阅后(用户明确购买后)才会被调用。订阅到期时它永远不会被调用,并且应该自动续订(如上面的博客文章所示);
- 使用 SKReceiptRefreshRequest API 明确要求我的收据(包含 IAP 的到期日期)更新失败,调用它的 request:didFailWithError: 委托方法。错误对象为 nil,所以我看不出它更新失败的原因。
我可以共享代码,但我觉得这与代码无关,而是某种我没有完全理解的项目/环境设置和/或行为。
你有什么建议可以尝试吗?
【问题讨论】:
标签: objective-c in-app-purchase storekit macos-sierra receipt