I’m using MKStoreKit, and it features a rather useful method to restore purchases, as explained here
However, I use consumable currency to unlock objects. Each object that is unlocked by spending currency is only unlocked locally, so if the user spends 1 currency to unlock 1 object, then deletes and reinstalls the app, that 1 object won’t be remembered as being unlocked.
One way around this that doesn’t involve storing user details on my own server, would be to create non-consumable in-app purchases for each object, and unlock them when the user spends the currency. Thus the non-consumable is invisible to the user. I haven’t tried this and it’s not ideal, since there’s more overhead in adding purchases, but I can’t see why it wouldn’t work?
Which leaves the currency. Can I restore the currency using MKStoreKit without having to log it on my own server or taking user details via GameKit etc? Many thanks!
About your first question, the only real difference in the user experience if you did it with separate non-consumables would be that they would be asked to complete the transaction when you ask store kit to buy the non-consumable rather than when they buy your currency. This makes the concept of currency somewhat irrelevant, since in the model you describe, they are charged only when they spend, and it’s proportional to how much they spend.
If you already have a released app, with real people who have paid for this currency, you’re going to have to support a transition period where those who have tokens left can spend them and avoid calling store kit in those cases since it was already called to get the tokens. Also make sure you stop selling new ones.
If it’s a new app, just ditch the idea of currency entirely and support buying things with real money. That’s what it looks like to the user and that’s what it really is, now.