在应用程序购买:错误线程1信号sigabrt

时间:2013-12-06 11:56:13

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

这是我在应用程序内购买时遇到的新情况。当我点击按钮购买它时,我可以从那里检索我的产品会抛出一个异常,例如"线程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个测试帐户测试应用程序超过一周这是一个问题吗?为什么这个例外会抛出,并且它会询问多次登录警报的原因是什么?请帮忙!

0 个答案:

没有答案