Proper way to integrate IAP when you can buy non-consumables with virtual currency?

Hi everyone.

I have a game in which you can buy diamonds, which I setup as consumable, because it is virtual currency with which you can unlock other characters. I also have a non-consumable which is an option to remove all the ads.

I learned that some developers were rejected, because they didn't implement a restore mechanism for those characters that were unlocked with virtual currency. So if the user bought tons of diamonds with real money and unlocked everything, if he installed the app on a different device, only the option with no ads could be restored.

My question is if it would be good practice if I would do the following: I would add all these characters as non-consumable for free, and attach the unlock non-consumable function to the "buy item with x diamonds" button. If the user had enough diamonds(either collected in the game or bought with real money), whenever he would click the "buy item with x diamonds" button, x diamonds will be deducted, but he would also get the pop-up saying he wants to unlock a non-consumable for free and then proceed. This way the characters unlocked will also be restored on other devices.

Is this good practice?

Would this be allowed to avoid implementing my own restore mechanism?

This is not the optimal approach since it involves two purchases by the user and, further, if the user doesn't do the second purchase they lose the restore function. Also, a free IAP is avialable only if you download content for that IAP (I think).


It is starightforward to store the 'consumable purchase' information in the user's iCloud key-value file. Then the app can restore itself automatically.

Thanks for the response. I looked into it and learned how to do it with a plugin. I am using Unity for this btw. Took some time because I was getting the error: "EntryPointNotFoundException", in the Unity Editor, just to find out that everything was fine in the build on the phone. But can you clarify one more thing for me please? Will this data persist if the user installs the app on different devices and also if he uninstalls it and reinstalls it again?

On different devices, yes.

If he deletes the app in its entirety - I'm not sure. There may be a clean-up procedure. Perhaps the best approach is keychain and iCloud - the keychain persists and the Cloud links devices.


For consumable purchases the user expects to lose the remaining purchase on deleting the app.

Proper way to integrate IAP when you can buy non-consumables with virtual currency?
 
 
Q