22
votes

I am implementing an application using in app purchase with non-consumables items, it was rejected by apple and the reason is:

We found that your app offers In-App Purchase/s that can be restored but it does not include a "Restore" feature to allow users to restore the previously purchased In-App Purchase/s.

To restore previously purchased In-App Purchase products, it would be appropriate to provide a "Restore" button and initiate the restore process when the "Restore" button is tapped.

For more information about restoring transactions and verifying store receipts, please refer to the

and there is no link to refer to, I have already implemented the:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

with SKPaymentTransactionStateRestored case.

but I didnt implement:

`restoreCompletedTransactions`  or `paymentQueueRestoreCompletedTransactionsFinished`

are these methods necessary for the in app purchase to be approved, or what is the exact problem.

Thanks

1

1 Answers

22
votes

Use the following to restore the products ID's that user did purchased from your app

- (void) checkPurchasedItems
{
   [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}// Call This Function

//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
  purchasedItemIDs = [[NSMutableArray alloc] init];

  NSLog(@"received restored transactions: %i", queue.transactions.count);
  for (SKPaymentTransaction *transaction in queue.transactions)
  {
      NSString *productID = transaction.payment.productIdentifier;
      [purchasedItemIDs addObject:productID];
  }

}

the purchasedItemIDs will contain all the product IDs that the user purchased it .. you could put a button to call this function when it finished you show all these products to enable the user to download it again.