Consumables instead of non-renewable subscription

In my app, I use non-renewable subscriptions. I have a login system which user enters his/her mail address that can be different from his/her apple id. I realized that after one purchase of subscription, untl expiry date user can activate a free subscription from another device with his/her apple id but for a different user in my server. Is it possible to convert those non-renewables to consumables so that these kinds of free activations can be prevented?

Replies

Apple requires that a user be able to copy their subscription to all devices owned by that user. This opens up the system to scammers who loan their Apple ID to their friends to allow them to get IAP privledges inappropriately. It's really not a big thing but if you want to prevent it there are a bunch of ways. For example, you can require that the user be logged onto "their" iCloud Account whenever they want to use "their" IAP rights. You can do that by writing the IAP rights to they purchaser's key-value file on iCloud and checking their key-value file on each launch. So if you want to let a friend have your IAP rights you have to let that friend stay logged into your iCloud Account - it can get awkward.


As you point out - a consumable IAP does not need to be shared among all devices owned by "the same" person. But a consumable IAP does not expire in time, it lasts forever and expires only when used. That means that a consumable 'monthly subscription' can be used anytime, even three years after purchase. One way around that is to sell "one month periods" as a consumable. You could buy two of them and use one starting today (and lasting for one month) and the other one starting on January 4, 2019 (and lasting until February 4, 2019). I do not know for sure that Apple will accept this type of 'consumable subscription'.