如何致电
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
如果在收到
的更新事务响应之前SKPaymentTransactionStatePurchased
在实际将钱汇入用户的iTunes帐户之后,该应用程序因来电或其他内容而被杀死。
不这样做不会让你解锁重新启动的功能,尝试重新购买会给出这个错误“你已经购买了这个,但它还没有被下载”,因为你没有完成交易而没有解锁功能,因为该应用程序被杀死。但在这一点上,这笔钱是从用户的itunes帐户中扣除的。这一切都发生在实际借记金钱之后,并且在您收到SKPaymentTransactionStatePurchased回复之前。在app之间被杀了。那么在这种情况下应该做什么呢?
答案 0 :(得分:0)
事务队列保持活动状态,直到您完成它为止 - 即使应用程序被终止 - 只需确保在下次启动时继续观察队列。
请注意,即使多个事务已排队,您也可以区分它们,因为paymentQueue:updatedTransactions:为每个事务提供一个数组,您可以单独查询它们的状态。例如:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
// Purchasing... waiting...
break;
case SKPaymentTransactionStatePurchased:
// Complete transaction here
break;
case SKPaymentTransactionStateFailed:
// Handle failure and finish transaction here
break;
case SKPaymentTransactionStateRestored:
// Restore transaction
break;
}
}
}