我根据this教程实施了应用内购买。我遇到的问题是,我无法检测到“确认您的应用程序内购买”警报时按下取消按钮,这是StoreKit框架的一部分。
有些消息来源建议在按下取消时调用-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
但在我的情况下它永远不会运行。我的设置是ViewController,它导入符合SKProductRequestDelegate和SKPaymentTransactionObserver的IAPManager:NSObject类。产品已成功请求,但事务观察者从不调用paymentQueue
。
如何让它工作,以便检测取消按钮?
答案 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:
消息。