继续获取询问iTunes密码的UIAlert

我有一个iOS应用程序,它具有应用程序内购买和恢复购买function。

当我在沙箱模式下testing应用程序时,我总是使用警报来询问iTunes帐户的密码(用户名已填充)。

现在我的应用程序是活的,我安装了它,并做了应用程序内购买,然后恢复购买,所以我不在沙箱模式仍然不断收到要求密码的iTunes帐户的警报。

以下是一个代码,它提供了我之前购买的ProductIds,然后将这些productId传递给委托,将这些状态从“购买”更改为“已购买”

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { //NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]); NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init]; //NSLog(@"received restored transactions: %i", queue.transactions.count); for (SKPaymentTransaction *transaction in queue.transactions) { NSString *productID = transaction.payment.productIdentifier; [purchasedItemIDs addObject:productID]; // NSLog (@"product id is %@" , productID); } if ( mDelegate != nil && [mDelegate respondsToSelector:@selector(purchasedProductList:)] ){ [mDelegate purchasedProductList:purchasedItemIDs]; } [purchasedItemIDs release]; } 

任何想法如何避免这一点?

谢谢

您需要确保finishTransaction:被调用。 它必须总是被调用,并多次调用一个事务是好的。 如果未被调用,事务将保留在队列中,应用程序将稍后再尝试处理该事务。 交易如何被添加到队列中并不重要,一旦它被执行就应该被“完成”。

请注意,在创build恢复新事务时,这些事务实际上是对原始事务的包装,并且需要“完成”。 从恢复文档:

支付队列将为每个先前完成的可以恢复的事务提供一个新的事务。 每笔交易都包含原始交易的副本。