M Katz
M Katz

Reputation: 5426

iOS in-app purchase: confirmation that restoreCompletedTransactions does not need to be used

When selling a non-consumable item through in-app purchase on iOS, the restoreCompletedTransactions method is provided so that you can retrieve all of the purchases a user has made in the past, which as I understand it is to give the user a quick way to restore their purchases, for instance when they get a new device.

I understand that if you are going to call restoreCompletedTransactions there is a question about whether it should be called automatically or manually when the user presses a button (see here for instance).

My question is whether it's necessary to call restoreCompletedTransactions at all. If my app has only one or two things to sell/unlock, it seems acceptable to let the user go through the standard purchase UI, as long as there's a note explaining that the user won't be charged again if purchasing something they've already purchased. So, say the user installs my game on a new device. On their old device they already purchased/unlocked Level X. When they get to Level X on the new device, it asks if they want to purchase it (explaining that they won't be charged twice if they purchased it previously), and they say yes, and they now have Level X on their new device, and they were only charged once (when they purchased it on their old device).

Is that a kosher way to handle it, as far as Apple approval is concerned? I can see how, if they had purchased 100 individual items it would be nice to give them a way to restore them all at once. But if it's just one or two unlocks for the whole app, is my no-restoreCompletedTransactions approach acceptable?

Upvotes: 3

Views: 3211

Answers (2)

Saxon Druce
Saxon Druce

Reputation: 17624

According to the 'Restoring Transactions' section of the In-App Purchase Programming Guide:

However, if your application supports product types that must be restorable, you must include an interface that allows users to restore these purchases.

We had an app with a non-consumable purchase, and we didn't include a restore button, instead relying on the default behaviour when the user tried to purchase again.

This was approved when we first submitted the app (May 2012), but then later (June 2012) when we submitted an update in an unrelated area, the update was rejected.

So to answer your question: No, it seems that you must use restoreCompletedTransactions. Although you might get away with it sometimes.

Upvotes: 5

Mugunth
Mugunth

Reputation: 14499

Restoring should be done only with user's action. You can have a button called Restore Previous Purchases or something.

The reason is, calling on restore shows the Authentication Window which is not considered good UX.

Hopefully with iOS 5, this problem is solved using iCloud.

Upvotes: 2

Related Questions