在购买时的应用购买错误

时间:2013-12-17 15:12:13

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

我正在购买应用程序(非消费品),当我进行购买时,弹出一个警告视图,显示“您已购买商品但尚未下载”并且交易得到重启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中测试时才会出现问题!这是因为未完成的交易或测试用户帐户问题还是其他问题?我不知道请帮忙!

1 个答案:

答案 0 :(得分:0)

您何时致电removeTransactionObserver

在过去,我遇到了一个问题,即我过早地删除了观察者,并且正在创建积压的不完整购买,并且一次只能完成一个。

我通过将removeTransactionObserver调用移至dealloc

来修复此问题