检测取消按钮点击“确认您的应用程序内购买”UIAlert

时间:2013-03-14 16:42:16

标签: iphone objective-c xcode in-app-purchase storekit

我根据this教程实施了应用内购买。我遇到的问题是,我无法检测到“确认您的应用程序内购买”警报时按下取消按钮,这是StoreKit框架的一部分。

有些消息来源建议在按下取消时调用-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions但在我的情况下它永远不会运行。我的设置是ViewController,它导入符合SKProductRequestDelegate和SKPaymentTransactionObserver的IAPManager:NSObject类。产品已成功请求,但事务观察者从不调用paymentQueue

如何让它工作,以便检测取消按钮?

3 个答案:

答案 0 :(得分:12)

在委托方法中,我看一下教程,如果用户取消,则failtransaction不会执行任何操作。但你可以这样添加它。

- (void)failedTransaction:(SKPaymentTransaction *)transaction
{
    if (transaction.error.code != SKErrorPaymentCancelled)
    {
        // error!
          NSLog(@"Something went Wrong!");
        [self finishTransaction:transaction wasSuccessful:NO];
          NSLog(@"transaction error :%@", transaction.error.localizedDescription);
    }
    else
    {
          NSLog(@"Cancelled");
        // this is fine, the user just cancelled
        [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    }
}

答案 1 :(得分:1)

必须添加此行才能使其正常工作:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

感谢大家的帮助。

答案 2 :(得分:0)

我没有使用过StoreKit,但我猜你的SKRequestDelegate会在用户取消时收到request:didFailWithError:消息。