1

我正在使用应用内购买为 iPhone 和 iPad 创建一个应用程序,但是我在 iPhone 上遇到了问题。当我点击我的可购买物品之一时,一旦将SKPayment其添加到SKPaymentQueue,我的 ViewController 就会自行关闭,使付款未处理。这导致崩溃,直到我添加[[SKPaymentQueue defaultQueue] removeTransactionObserver:self]到我的dealloc.

一旦我重新启动该应用程序,它将按预期处理付款并授予用户他们购买的内容。它不会处理付款,除非它已完全退出并重新启动。

我添加付款的方式如下:

- (void)purchaseConnector: (NSIndexPath *)indexPath
{
    SKProduct *selectedProduct = productDetailsList[indexPath.row];
    SKPayment *payment = [SKPayment paymentWithProduct:selectedProduct];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

之后它进入这里:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    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;
        }
    }
}

事务的状态是SKPaymentTransactionStatePurchasing并因此继续,之后 ViewController 关闭并UIAlert弹出“确认您的应用内购买”。

同样,对于 iPad,一切都按预期完美运行,这些问题仅在使用 iPhone 时才会出现。

编辑

我想澄清一下,问题是商店 ViewController 正在解雇。我自己从不忽略它,而且似乎无法通过它接收该命令的位置。解雇不会发生在 iPad 上,只是在 iPhone 上。

4

1 回答 1

0

你的代码看起来不错。

看看这个,以防你错过了什么。

于 2013-03-27T16:39:29.060 回答