2016-11-28 67 views
1

我试图实现StoreKit在我的macOS应用程序中自动更新订阅的功能。在macOS沙箱环境中购买自动续订订阅后,收据不会得到更新

阅读了几十页并检查示例之后,我了解了所有内容如何组合在一起,但无法使其正常工作。

我所试图做的事:

  1. 一旦应用程序启动,检查是否为有效订阅者可通过评估当地的收据。我特别检查收据的任何In-App Purchase field entries中的取消日期是否无效,以及订阅到期日是否将来。
  2. 如果没有(有效)订阅可用,我将使用StoreKit的API购买订阅。

这两种方案都正常工作,因为此流程在第一次购买订购时完美无缺。但是,订阅到期日期结束后收据不会自动更新。我期待这张收据定期更新,如Auto-renewing subscription and app receipt所示。因此,上述第一步失败,因为某个点的到期日期在历史中,因此被视为过期。

两件事情,我觉得奇怪:

  • 我SKPaymentTransactionObserver实例只被购买订阅(经过用户明确购买它)后调用。它在订阅过期时不会被调用,并且应该自动更新(如上面的博客文章所示);
    • 使用SKReceiptRefreshRequest API显式询问我的收据(包含IAP的过期日期)会失败,方法是调用它的请求:didFailWithError:delegate方法。错误对象为零,所以我不明白为什么它更新失败。

我可以共享代码,但我有一种感觉,这是不相关的代码,而是某种项目/环境的设置和/或行为,我不完全得到。

你有什么建议可以尝试吗?

回答