I'm working on an app that has non-consumable IAPs. My app got rejected because I don't provide a "restore" button for the IAPs. But I get the IAPs from the store and unlock the parts of my app based on what they purchased according to the store. Using this model I'm not sure why I need a restore button - the store is the system of record for purchases. If a user switches phones, they still get all of their purchases because I get them from the store. I've tested this and it works fine. The content for the IAPs is not stored in the store but in my servers keyed on the product id, so I use the id purchases from the store. Can anyone help me understand why I need a "restore" button with this model?
Why a "restore" button when IAPs come from store
When a user buys a new device how does your system recognize that user to credit them with the IAP?
Thanks for the quick response and sorry for not replying sooner.
A couple of points I should clarify:
- This app needs a WiFi or data connection to work - it is a network based game, so the user must have access to the internet to play
- The app is a hybrid app built on Cordova - it isn't a native iOS app
To your question, and I'm making some assumptions in answering it, if someone buys a new device and installs the app, they must have logged into the store to do it. I assume that when my app calls the store, additional metadata about the user (including their credentials or some security token) is included in the call automatically. That metadata identifies the user to the store so when I ask the store what products the user owns, it tells me their list of products. I ask that question before they get to a page that shows products so it should display purchases and non-purchases correctly.
It is quite possible I have this wrong, but in my testing this seems to be the way it works. But I have only testwd in TestFlight so maybe it works differently in production.
Any corrections you can make to my assumptions or RTFM suggestions are appreciated!
>If someone buys a new device and installs the app, they must have logged into the store to do it. I assume that when my app calls the store, additional metadata about the user (including their credentials or some security token) is included in the call automatically. That metadata identifies the user to the store so when I ask the store what products the user owns....[clip]
More than likely, they restore from a backup to the new device and much of that info is already on board.
Your assumptions are basically wrong. There is no way to identify the user. My 'question' was actually not a question - let me rephrase -
When a user buys a new device how does your system recognize that user to credit them with the IAP? It can't. So you need a restore function.
you wrote:
>when I ask the store what products the user owns,
You can't do that. And even if you could - how does that identify a user?