【问题标题】:How to properly handle renewal of the autorenewable subscriptions (iOS)如何正确处理自动续订订阅的续订 (iOS)
【发布时间】:2017-06-16 04:04:26
【问题描述】:

在苹果文档中找到了这条语句:

订阅成功续订后,Store Kit 会添加一个 交易队列的续订。您的应用程序检查 启动时的事务队列并以相同的方式处理更新 与任何其他交易一样。

如果我只在开始时这样做:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

什么都没有发生 - 订阅未续订(使用测试模式)。

如果我添加

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

然后它会遍历完整的购买历史记录,这也不是我想要的。

处理它的正确方法是什么?

【问题讨论】:

    标签: ios in-app-purchase storekit subscriptions


    【解决方案1】:

    您需要了解的一件事是,在沙盒环境中测试自动续订订阅时,有时订阅不会续订,您也不会收到来自商店的续订电话。

    这在沙盒中是正常的,在沙盒环境中调用restoreCompletedTransactions有时会触发商店的续订。订阅本身的持续时间在沙盒中有所不同:这是沙盒中的持续时间表:

    只需在您的应用启动并投入生产时添加[[SKPaymentQueue defaultQueue] addTransactionObserver:self],它就会得到更新,并且您会接到电话。

    【讨论】:

    • 即使我在开始时添加事务观察器,我也没有收到续订电话
    【解决方案2】:

    Apple 应用内购买 storkit 文档:-

    订阅成功续订后,Store Kit 将续订交易添加到交易队列中。您的应用会在启动时检查事务队列,并以与任何其他事务相同的方式处理续订。

    这意味着, 如果用户的订阅是自动续订的,并且当时我们的应用程序没有运行,Apple 会将续订的交易添加到事务队列中。因此,当您打开应用程序时,我们可以从事务队列中获取那些更新的事务详细信息。

    storekit 文档中还提到了另一条语句,例如:-

    请注意,如果您的应用在订阅更新时已经在运行,则不会调用事务观察器;您的应用会在下次启动时发现续订。

    解决方案:如何处理自动续订?

    根据 Apple storekit 最佳实践,我们应该在 AppDelegate 的“didFinishLaunchingWithOptions”中添加以下行:-

    SKPaymentQueue.defaultQueue().addTransactionObserver(SubscriptionObserverClassReference)
    

    & 用于验证订阅,有两种方式:

    1) 使用服务器: 设置在用户订阅到期日期前后验证用户订阅的 cron 作业。因此,我们可以根据到期日期识别用户订阅是否续订。

    2) 使用StoreKit Observer:- 每次用户续订时,我们都会得到续订的交易信息。因此,我们可以据此采取相应的行动。

    【讨论】:

    • 你这个问题的解决方案没有意义:在不调用事务观察者的情况下,添加事务观察者并不能解决应用运行时没有事务的问题。你能澄清一下你的意思吗?
    【解决方案3】:

    评论者和文档是正确的:在开始时将事务观察器添加到 PaymentQueue 就足够了。在我的情况下,我一直使用的沙盒用户没有触发续订。我创建了一个新的并且它有效!

    【讨论】:

      【解决方案4】:

      就我而言,在订阅的沙盒测试中,它只会在第一次订阅购买时自动更新订阅 5。后续订阅购买将在购买后停止续订。唯一的测试方法是重新创建一个新的沙盒用户并再次测试。冲洗并重复!

      【讨论】:

        猜你喜欢
        • 2018-05-19
        • 2015-06-26
        • 2018-08-28
        • 1970-01-01
        • 2021-06-21
        • 2015-02-27
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        相关资源
        最近更新 更多