我开发的游戏 需要有iap 从网上拔来了oc的各种代码 调试后发现有个问题 我第一次购买正常 第二次购买以后点一次付款 有2个购买成功提示 第三次有3个 依此类推
看了下代码
// SKProductsRequest 的回调
-
(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProduct = response.products;if (myProduct.count == 0) {
NSLog(@“2.失败–>无法获取产品信息,购买失败。invalidProductIdentifiers = %@”,response.invalidProductIdentifiers);
self removeLoadingView];
return;
}
NSLog(@“2.成功–>获取产品信息成功,正在购买…”);
SKPayment * payment = SKPayment paymentWithProduct:myProduct0]];
SKPaymentQueue defaultQueue] addPayment:payment];
}
// SKPayment 的回调
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
NSLog(@“3.成功–>接收苹果购买数据,正在处理…”);
for (SKPaymentTransaction *transaction in transactions){
switch (transaction.transactionState){
case SKPaymentTransactionStatePurchased:
self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
self restoreTransaction:transaction];
break;
default:
break;
}
}
}
其中有这两个接口 有问题的时候 上面的didReceiveResponse走了一次 然后调用updatedTransactions 本来应该只走1次的 但是随着购买次数的累计 这个会走多次 我不很明白啊
网上说 购买交易成功finishTransaction:transaction就可以的 我也确实调用了这个
// 结束交易
- (void) completeTransaction: (SKPaymentTransaction*)transaction
{
NSLog(@“4.成功–>结束交易 SKPaymentTransactionStatePurchased”);
self removeLoadingView];
// 记录交易和提供产品 这两方法必须处理
self recordTransaction: transaction];
self provideContent: transaction.payment.productIdentifier];
// 移除 transaction from the payment queue.
SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
// 重置交易
- (void) restoreTransaction: (SKPaymentTransaction*)transaction
{
NSLog(@“4.成功–>重置交易 SKPaymentTransactionStateRestored”);
self recordTransaction: transaction];
self provideContent: transaction.originalTransaction.payment.productIdentifier];
SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
// 交易失败
- (void) failedTransaction: (SKPaymentTransaction*)transaction
{
self removeLoadingView];
NSLog(@“4.成功–>交易失败 SKPaymentTransactionStateRestored error.code:%d”,(int)transaction.error.code);
SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
每次交易确实都走了finish 但是为什么updatedTransactions调用的次数会越来越多呢?