Let’s say you’ve created an IAP Subscription for some feature you’ve created.
You submit it but find your app gets rejected for a reason along the lines of:
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.
What’s lacking is actually pretty simple. Say a user has made a purchase for a 1 year subscription for feature A. Then, they delete the app but subsequently re-install it. Now they want feature A back. You need to let the user restore that subscription. You just need to implement a Restore button and the actual process of restoring the purchase is just add:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Then, if you’ve implemented the SKPaymentTransactionObserver protocol correctly (see my earlier post – http://www.snowcrash.eu/skpaymenttransactionobserver-protocol-reference/) this method will get called:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
which gives you chance to make any settings required by your app and fire off NSNotifications to update Views, etc.
Note: this is only for Subscriptions. Consumable products don’t require a restore.