Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should I create a consumable or a non-renewable subscription for a premium account? [closed]

I have an iOS application (and a website). There should be a premium user option i.e the user has access to special content if he/she is a premium user. Users can become premium users on a monthly or yearly basis.

First question - Does Apple allow having the facility to offer the same products for purchase on the website as well as through InAppPurchase (following the rules by Apple - there won't be any link or indication in the app that the same can be bought on the website). So if a user buys the premium account via InAppPurchase he/she can login to the website as well as a premium user and vice versa.

If that is allowed, is it better to have implemented the premium user functionality using a consumable type product and have the server manage everything or use a non-renewable subscription?

Consumable Approach Do the InAppPurchase and then send a request to server saying that the current user is a premium user for a month/year and then every time the app launches/user signs in, call an API to check whether the current user is a premium user or not.

The tricky cases to handle are 1. When the user is using the app exactly when his/her premium user status expires. 2. If network goes off just after the InAppPurchase is done and the request to the server is incomplete.

Non-renewable subscription approach I'm not sure how this works exactly, but i'm guessing it would be similar to the consumable one.

Which of the two approaches would be better for restoring previous transactions?

like image 436
vivek241 Avatar asked May 02 '13 05:05

vivek241


1 Answers

  1. Yep as long as you provide the premium feature in the app (in our Facebook app linked to the iOS one, we implemented Facebook credits for the same features for example)
  2. Our app (which was using a consumable in-app to enable a premium feature) have been rejected a couple of times until we switched to a non-renewable subscription. The premium feature had a time limit and the reason Apple rejected it was that if the premium feature involves time other than added features you have to use a non-renewable subscription since that is its purpose

Tricky cases are not that tricky actually. For the first one, have the app retrieve the expiration time from the server (you did save it after purchasing subscription right? ;-) ) and when the user tries to use a premium feature implement a check to ensure he is still allowed. For the second, save the purchase in the phone and then send the receipt to the server for validation. Only when the server is reachable and says the receipt is valid, delete it from the phone. Otherwise, you can check at start up if there are unsent receipts saved in the phone that you should resend to the server for validation.

like image 104
andreag Avatar answered Oct 20 '22 15:10

andreag