【问题标题】:Autorenewable Subscriptions won't be autorenewed自动续订订阅不会自动续订
【发布时间】:2011-09-28 09:38:36
【问题描述】:

很抱歉关于自动更新订阅的第 100 万个问题,但我不明白。 我已经按照 Apples In-App Purchase Guidelines 中的说明完成了所有操作,但并没有解决问题。

我的问题是我创建了可自动更新的订阅,但它们不会自动更新。

我创建了一个 Payment Transaction Observer 类,它实现了 SKPaymentTransactionObserver 接口。此类将在应用程序启动时以viewDidLoad: 方法安装为paymentObserver。

PaymentTransactionObserver *observer = [[PaymentTransactionObserver alloc] init];

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

在 paymenttransactionobserver 我有 paymentQueue:updateTransactions 方法:(与 Apple 文档中的描述相同)

  • (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { for (SKPaymentTransaction *transaction in transactions) {
    switch (transaction.transactionState) {

        case SKPaymentTransactionStatePurchased: 

            [self completeTransaction:transaction]; 

            break;

        case SKPaymentTransactionStateFailed: 

            [self failedTransaction:transaction]; 

            break;

        case SKPaymentTransactionStateRestored:

            [self restoreTransaction:transaction]; 

            break;

        default:

            break;
    }
}

当我购买自动更新产品时,该产品将被成功购买。 但它永远不会自动更新。我想,事务观察者会以某种方式被释放,但不会(否则,调试器会通知我)。不过,我也确实删除了观察者,但它永远不会被删除。

我使用调试器确保updateTranscations: 方法将被调用,但没有。当我购买自动更新时间为一周的测试产品(沙盒模式)时,该方法应该在 3 分钟后被调用,但它不会。

我做错了什么?

有人可以帮忙吗?

Br 网卡

【问题讨论】:

  • 我刚刚在苹果论坛上发布了这个问题,所以希望我能尽快得到答复!
  • 现在我还创建了一个开发者支持请求。这个问题似乎还有很多其他问题!

标签: ios in-app-purchase sandbox restore


【解决方案1】:

如果订阅是自动续订的,则交易不会通过 paymentQueue:updateTransactions 方法。更新只发生在商店中。如果你想测试它,你必须:

  • 如果您将收据存储在应用服务器上,请重新验证收据。

  • 在您的 iOS 客户端上重新验证收据

(http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html#//apple_ref/doc/uid/TP40008267-CH104-SW1)

为了避免在每次启动/激活时测试自动续订,您应该存储订阅期的 endDate 以便之后测试续订。

另见:

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/RenewableSubscriptions/RenewableSubscriptions.html#//apple_ref/doc/uid/TP40008267-CH4-SW4

但是,沙盒中似乎存在错误。订阅有时会更新,有时不会。很难测试....

【讨论】:

  • 在沙盒中,每个测试用户只需更新六次,然后它们就会停止,因此您必须为此注册一个新的测试用户
【解决方案2】:

自动续订仅在应用启动时或从后台循环返回时发布到应用的购买队列中。尝试单击主页按钮,然后返回您的应用。

【讨论】:

  • 但它应该在应用程序运行时也能工作吗? (好的,在订阅到期之前,您通常不会让您的应用程序运行,但从开发人员网站来看,这将是一件正常的事情并且也很有帮助)。它是否记录在苹果购买指南中?我会试试这个,但感谢您的回复!
  • 你调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];启动时?
  • @NicTesla 不。在应用程序运行时它也不应该工作。这就是为什么我说它不起作用的原因 :) 在 47:10 处查看 2011 WWDC 视频 #510。
  • @NicTesla 而且你永远不应该在启动时调用restoreCompletedTransactions 或响应任何非直接用户交互的事情。它会弹出一个警报,询问他们的 Apple ID 凭据,如果它一直/随机发生,将会非常混乱/烦人。
  • 好的,感谢您提供此信息!无论如何,它仍然不起作用,所以我联系了苹果开发人员,他们说在几个商店的沙盒模式中存在错误。你用的是什么商店?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2021-09-09
  • 2013-10-08
  • 2012-10-12
  • 2014-04-17
  • 2014-03-01
  • 2013-01-27
相关资源
最近更新 更多