【问题标题】:In app purchase error while purchasing购买时出现应用内购买错误
【发布时间】:2013-12-17 23:38:12
【问题描述】:

我正在购买应用程序(非消耗品),当我购买它时会弹出一个警报视图,显示“您已经购买了物品但尚未下载”并且交易得到失败。即使重新启动 Xcode 并关闭/打开设备,它仍然保持不变。我有一个恢复按钮,通过点击我可以恢复项目。

点击恢复后它会调用paymentQueueRestoreCompletedTransactionsFinished

- (IBAction)Restore:(id)sender {
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];


}
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    [self UnlockPurchase];
}

但这永远不会用到以下方法:

 case SKPaymentTransactionStateRestored:
                NSLog(@"Restored ");
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;

当我使用其他测试用户帐户进行测试时,上面的函数SKPaymentTransactionStateRestored 被调用,我恢复时没有问题。 我已经在两台设备上进行了测试,如果我在运行 iOS 7 的 iPhone 5 中没有问题。但是在 iPhone 4(iOS 6)中运行,它会在我运行时弹出登录警报视图(测试用户从不输入SKPaymentTransactionStateRestored)该应用程序。我猜是因为未完成的交易,但是我使用它的这个测试用户帐户从不输入SKPaymentTransactionStateRestored(其他帐户确实输入)。如何摆脱自动发生的登录警报?只有当我在 iPhone 4 中测试时才会出现问题!这是因为未完成的交易或测试用户帐户问题还是其他原因?我不知道请帮忙!

【问题讨论】:

  • 不幸的是,商店工具包在沙盒模式下测试时是出了名的不准确。这甚至得到了苹果工程师的承认。可悲的是,在过去的几年里,当我在一个有意义的阶段存储工具包代码并且通常测试进展顺利时,我认为它很好并继续前进。不知何故,我没有任何问题。
  • 我可能从来不关心这个导致我出现问题的特定用户帐户,但是当我使用我的应用程序时,这会弹出一个登录提醒。那是一件事毁了我@GuyKogus

标签: ios objective-c xcode in-app-purchase


【解决方案1】:

你什么时候打电话给removeTransactionObserver

在过去,我遇到过一个问题,即我过早地移除了观察者,这造成了未完成购买的积压,并且一次只能完成一个。

我通过将 removeTransactionObserver 调用移动到 dealloc 来修复它

【讨论】:

  • 是的,我已经在我的购买视图控制器中这样做了'- (void)dealloc { [[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; }'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多