ios - 自动续订订阅不会自动续订

标签 ios in-app-purchase sandbox restore

很抱歉关于自动续订订阅的第百万个问题,但我不明白。 我已按照 Apple 的应用内购买指南中的描述完成所有操作,但并没有解决问题。

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

我创建了一个 Payment Transaction Observer 类,它实现了 SKPaymentTransactionObserver 接口(interface)。此类将在 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 分钟后被调用,但它不会。

我做错了什么?

有人可以帮忙吗?

小红书

最佳答案

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

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

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

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

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

另见:

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

但是,沙箱中似乎存在错误。订阅有时会续订,有时不会。难以测试....

关于ios - 自动续订订阅不会自动续订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581190/

相关文章:

ios - 应用程序因存在自动续订订阅而被拒绝,但实际上在二进制文件和 iTunes 帐户中均不可用

xcode - 沙箱无法访问本地套接字

ios - PBXCp 错误 ShareKit.bundle 未构建

ios - 如何响应 UIImagePickerController 生成的 UIAlertView

ios - 快速恢复购买时崩溃

ios - 清除 SKPAymentQueue : Forcing Unfinished Transactions To Finish

ios - 用户删除我的 iOS 应用程序后如何存储本地数据?

lua - 如何创建安全的 Lua 沙箱?

objective-c - 从应用程序内将捆绑的 PDF 发送到 iBooks

ios - 在 BLE 中读取和写入数据以快速打开/关闭 LED