iphone - Consumable vs. non-consumable in iOS -


we 3 guys, have made free game iphone, has been available on app store year.

the app board game, create user or login using facebook credentials. able log out of game , log in account.

now have updated app ability upgrade user premium user. allowing personal , global game statistics.

but apple giving headache in approval process, , refuses accept our in-app purchase. first not approve it, had no restore button. when told them, restore button not required, consumable purchase, demand change non-consumable , add restore button.

consider scenario if purchase non-consumable.

  1. user logs in.
  2. user upgrades account premium
  3. user logs out.
  4. user logs in different account.
  5. user restores previous purchase.

this allow upgrade 2 accounts premium, 1 purchase.

apple's argument is, our users need able restore purchases, if new device setup, or device restored.

but not way works. users upgrade accounts premium accounts. when buy new device or restores existing device, log in existing game account, , upgrade available, because on server-side has marked account premium account.

so question basically. totally wrong, when choose use consumable instead of non-consumable. , if so, how should non-consumable implemented in order (potentially) purchased more once different game accounts on same device?

and secondly, if correct usage of consumable in-app purchase, should convince apple, on right path?

if premium account users have buy once apple right ask switch non-consumable in-app.

the scenario described quite possible (i had face too) if add server-side verification of in-app receipts before unlocking premium feature (saving transactions associated user) have chance verify purchase new or restored checking fields original_transaction_id , original_purchase_date in receipt data. way can see if user restoring purchase same bought (maybe checking facebook user id).

anyway, experience showed me chance of happening not high , wouldn't recommend implementing check (although server side validation must ;-) )


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -