继续获取要求输入iTunes密码的UIAlert

时间:2013-07-18 06:30:23

标签: ios in-app-purchase itunes

我有一个iOS应用,它具有应用内购买和恢复购买功能。

当我在沙箱模式下测试应用程序时,我总是使用提醒警告来询问iTunes帐户的密码(UserName已经填充)。

现在我的应用程序正在运行,我安装了它并进行了应用程序内购买,然后恢复了购买,所以我还没有进入沙盒模式,我仍然不断收到提示,要求输入iTunes帐户的密码。

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

- (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];
}

知道如何避免这种情况吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您需要确保调用finishTransaction:。必须始终调用它并在事务上多次调用它很好。如果未调用,则事务将保留在队列中,应用程序将尝试稍后再次处理它。事务如何被添加到队列并不重要,一旦它被采取行动就应该“完成”。

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

  

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