在下次启动时处理待处理的App App交易

时间:2011-04-29 15:44:30

标签: iphone ios4 in-app-purchase

如何致电

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

如果在收到

的更新事务响应之前

SKPaymentTransactionStatePurchased

在实际将钱汇入用户的iTunes帐户之后,该应用程序因来电或其他内容而被杀死。

不这样做不会让你解锁重新启动的功能,尝试重新购买会给出这个错误“你已经购买了这个,但它还没有被下载”,因为你没有完成交易而没有解锁功能,因为该应用程序被杀死。但在这一点上,这笔钱是从用户的itunes帐户中扣除的。这一切都发生在实际借记金钱之后,并且在您收到SKPaymentTransactionStatePurchased回复之前。在app之间被杀了。那么在这种情况下应该做什么呢?

1 个答案:

答案 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;
    }
  }
}
相关问题