我正在购买应用程序(非消费品),当我进行购买时,弹出一个警告视图,显示“您已购买商品但尚未下载”并且交易得到重启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中测试时才会出现问题!这是因为未完成的交易或测试用户帐户问题还是其他问题?我不知道请帮忙!
答案 0 :(得分:0)
您何时致电removeTransactionObserver
?
在过去,我遇到了一个问题,即我过早地删除了观察者,并且正在创建积压的不完整购买,并且一次只能完成一个。
我通过将removeTransactionObserver
调用移至dealloc