关于内购iap开发的问题

我开发的游戏 需要有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调用的次数会越来越多呢?

不要从网上乱扒代码 人家的环境你又不知道 你这应该是监听的问题