这是我在应用程序内购买时遇到的新情况。当我点击按钮购买它时,我可以从那里检索我的产品会抛出一个异常,例如"线程1信号sigabrt" 并且控制台打印以下内容:
2013-12-06 16:40:16.641 sample[384:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Cannot finish a purchasing transaction'
点击我的购买按钮后,
- (IBAction)buyProduct:(id)sender {
SKPayment *payment = [SKPayment paymentWithProduct:_product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
它移动到更新交易,那里
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[self UnlockPurchase];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:NSLog(@"Transaction Failed");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
default:
break;
case SKPaymentTransactionStatePurchasing:
NSLog(@"purchasing");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
[[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
}
}
}
现在断点直接移动到SKPaymentTransactionStatePurchasing
并且异常抛出。我有一个恢复按钮,使用它我可以恢复项目没有问题它工作。但尝试再次使用测试帐户购买抛出这个错误。在我回购的很多次之前,我收到了一个警告显示"你是否想要再购买这个"但现在它失败了。这是因为使用测试帐户太多次了?
另一个问题,在抛出此异常之前,我在启动应用程序后发现了很多次(在几秒钟内)它向我显示登录(测试用户acc)的警报视图以及点击" buyProduct"我购买它显示我的第二个测试帐户,并在进入我的购买控制器视图后。我已将[[SKPaymentQueue defaultQueue] addTransactionObserver:_purchaseController];
放在viewDidLoad
中。那是对的吗 ?当我想购买时(在工作状态下),登录警报会多次弹出,但现在却直接抛出了这个错误。
我使用3个测试帐户测试应用程序超过一周这是一个问题吗?为什么这个例外会抛出,并且它会询问多次登录警报的原因是什么?请帮忙!