很抱歉关于自动续订订阅的第百万个问题,但我不明白。 我已按照 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)
为了避免在每次启动/激活时都测试自动续订,您应该存储订阅期的结束日期以便之后测试续订。
另见:
但是,沙箱中似乎存在错误。订阅有时会续订,有时不会。难以测试....
关于ios - 自动续订订阅不会自动续订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581190/