我正在使用In-App Purchasing为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。