在Apple文档中找到此声明:
成功续订订阅后,Store Kit会添加一个 用于续订事务队列的事务。你的应用检查 启动时的事务队列并以相同的方式处理续订 与任何其他交易一样。
如果我只在开始时这样做:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
没有任何反应 - 订阅不会续订(使用测试模式)。
如果我添加
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
然后它会在完整的购买历史中运行,这也不是我想要的。
处理它的正确方法是什么?
答案 0 :(得分:2)
您需要了解的一点是,在沙箱环境中测试自动续订订阅时,有时订阅不会续订,您也无法从商店获得续订服务。
这在沙箱中是正常的,并且在沙箱环境中调用restoreCompletedTransactions
有时会触发商店上的续订。沙箱中订阅本身的持续时间不同:以下是沙箱中的持续时间表:
只需在您的应用启动时添加[[SKPaymentQueue defaultQueue] addTransactionObserver:self]
,然后在制作中,它就会续订,您将接到来电。
答案 1 :(得分:1)
Apple应用内购买storkit文档:
成功续订订阅后,Store Kit会将续订事务添加到事务队列中。您的应用程序在启动时检查事务队列,并以与任何其他事务相同的方式处理续订。
这意味着, 如果用户的订阅是自动续订的,那时我们的应用程序没有运行,Apple在事务队列中添加了续订的事务。因此,当您打开应用程序时,我们可以从事务队列中获取更新的事务详细信息。
storekit文档中提到了另一个声明,如: -
请注意,如果您的应用在订阅续订时已在运行,则不会调用事务观察器;您的应用在下次启动时会发现续订。
解决方案:如何处理自动续订订阅?
根据Apple storekit的最佳做法,我们应该在AppDelegate的“didFinishLaunchingWithOptions”中添加以下行: -
SKPaymentQueue.defaultQueue().addTransactionObserver(SubscriptionObserverClassReference)
&安培;用于验证订阅,有两种可用方式:
1)使用服务器:设置用于验证用户订阅的用户订阅到期日期的cron作业。因此,我们可以根据到期日期确定是否续订的用户订阅。
2)使用StoreKit Observer:每次续订用户订阅时,我们都会获得续订的交易信息。因此,我们可以据此采取行动。
答案 2 :(得分:0)
评论员和文档是正确的:在启动时将交易观察者添加到PaymentQueue就足够了。在我的情况下,我一直使用的沙盒用户没有触发更新。我创建了新的,它工作了!
答案 3 :(得分:0)
就我而言,在沙盒订阅测试中,仅会在首次订阅时自动续订5个订阅。以后的订阅购买将在购买后停止续订。测试的唯一方法是重新创建一个新的沙箱用户并再次测试。冲洗并重复!