iphone - Handling pending In App Purchase transactions on next launch -


how call

[[skpaymentqueue defaultqueue] finishtransaction:transaction];  

if before receiving updated transaction response of

skpaymenttransactionstatepurchased

and after debiting money user's itunes account, app gets killed due incoming call or something.

not doing not let unlock functionality on relaunch , trying re-purchase give error "you've purchased hasn't been downloaded" because didn't finish transaction , failed unlock functionality because app got killed. @ point money debited user's itunes account. happened after actual debit of money , before receiving response skpaymenttransactionstatepurchased. in between app got killed. 1 supposed under such circumstances?

the transaction queue remains active until finish —even if app killed—, make sure keep observing queue on next launch.

note if multiple transactions queued, can distinguish them in because paymentqueue:updatedtransactions: gives array each transaction , can query state individually. example:

- (void)paymentqueue:(skpaymentqueue *)queue updatedtransactions:(nsarray *)transactions {   (skpaymenttransaction *transaction in transactions)   {     switch (transaction.transactionstate)     {         case skpaymenttransactionstatepurchasing:             // purchasing... waiting...             break;          case skpaymenttransactionstatepurchased:             // complete transaction here             break;          case skpaymenttransactionstatefailed:             // handle failure , finish transaction here             break;          case skpaymenttransactionstaterestored:             // restore transaction             break;     }   } } 

Comments