我正在使用应用内购买为 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 上。