7

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

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

我怎样才能让它工作,所以我可以检测到取消按钮?

4

3 回答 3

13

在委托方法中,如果用户取消,我会查看教程 failedtransaction 什么都不做。但你可以像这样添加它。

- (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];
    }
}
于 2013-03-14T17:03:42.300 回答
1

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

感谢你的帮助。

于 2013-03-14T19:26:37.980 回答
0

我没有使用 StoreKit,但我猜如果用户取消,你SKRequestDelegate会收到消息。request:didFailWithError:

于 2013-03-14T16:45:01.243 回答