Auto-Renewable Subscription in iOS7

Auto-renewable subscription in ios7

To check if a user still has access to the product you should store the receipt data you received during the payment and check that receipt with the app store service.

The app store service will reply with a status for your receipt (0 for valid receipt, 21006 if the subscription has expired and was not renewed, etc)

The process with sample code can be found here :

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW3

To answer your last question : Yes Apple rejects a lot of ARS apps, it only works for content apps (magazine, newspaper, videos, etc). For example if you offer a service such as dropbox your app is not eligible to ARS

In our case we are distributing a book subscription service, to validate the app Apple asked us how many new content is available to users every month.


edit

For iOS 7 status 0 represents a valid receipt even if it's expired :

For iOS 7 style app receipts, the status code is reflects the status
of the app receipt as a whole. For example, if you send a valid app
receipt that contains an expired subscription, the response is 0
because the receipt as a whole is valid.

You need to verify the latest_receipt_info expires_date.

iOS 7 Auto-renewable subscription expiration

All it means to check the transactions on launch is to call this once every time you run the app, not just before you make a purchase.

[[SKPaymentQueue defaultQueue] addTransactionObserver:anObserver];

That way any renewals or interrupted/incomplete transactions can be handled.

When do Apple auto-renewable subscriptions renew?


The renewal process begins with a “preflight” check, starting ten days
before the expiration date. During those ten days, the App Store
checks for any issues that might delay or prevent the subscription
from being automatically renewed—for example, if the customer no
longer has an active payment method, if the product’s price increased
since the user bought the subscription, or if the product is no longer
available. The App Store notifies users of any issue so that they can
resolve it before the subscription needs to renew, ensuring their
subscription isn’t interrupted.

The answer to your first question is 10 days. You will not miss any and it is handled by the App Store.

During the 24-hour period before the subscription expires, the App
Store starts trying to automatically renew it. The App Store makes
several attempts to automatically renew the subscription over a period
of time but eventually stops if there are too many failed attempts.

It is possible for it to renew after a previous failure. For instance if the user's payment information becomes invalid. This is why they begin ten days early. The App Store will prompt the user to correct their information. If they complete this 24 hours prior to renewal everything will be okay.

If it stops "after too many failed attempts" then it won't try again until the next subscription period.

Also of note, is that changing the subscription price does not necessarily disable a subscription.

How to handle auto renewable subscription resubscribe?


  1. That is the expected behaviour, also note that with each of the subsequent purchases there is an original_transaction_id so you can tell what the original purchase was.

  2. Whenever you call your server receipt verification, you send up the receipt data the app has currently, and Apple always returns the very latest receipt info. So you can call Apple whenever you like to verify a subscription is still active, or an any subsequent transition to verify a re-subscriptiuon happened. You can also store the data from the app receipt on the server to check from time to time only on the server side, to verify a subscription is still active and has not been cancelled.

  3. I think you used to be able to upgrade/downgrade in sandbox, if not from the sandbox account editing page in device settings, then try by allowing a downgrade/upgrade purchase in your app. At the very least I believe it should work using Xcode 12 App Store configuration local StoreKit testing.

  4. I am not sure if that behaviour you are seeing is normal, If you subscribe after a subscription has lapsed, it should behave like a new purchase - but would still have an original_transaction_id of the original subscription.

In-App Purchases Auto-Renewable Subscriptions vs Non-renewable?

I do not have experience with auto-renewable subscriptions, but I do have extensive experience with IAP and non-renewable subscriptions. I use non-renewable subscriptions for a service that isn't a digital download.

Renewable Subscription Cons

  • User has to manually renew each month.
  • You will probably want to consider longer subscription periods. My app has 2 month and 1 year.

Renewable Subscription Pros

  • Users only pay for what they use. You can turn this to your advantage.
  • My own app saw a good increase in conversation rates when I explained that subscriptions do not auto renew and so they did not need to worry about canceling the subscription.
  • You can change the price!
  • Much more flexibility about how you can use it.
  • It has the standard popups during purchase. You will have a better conversation rate from the user hitting the buy button to them following through with the purchase.

Auto-Renewable Cons

  • LOTS of regulations about what you can do with it.
  • It is very possible that you won't be able to use auto-renewable in your situation.
  • Only the user can cancel their subscription. You can't add an easy way to do this into your app and keep your users happy.
  • The purchase process has extra steps that ask the user if they want to share their information with the publisher.
  • There is no API to know when the subscription will end.
  • You will have more negative reviews.

Auto-Renewable Pros

  • Users don't have to manually renew.
  • You have a more guaranteed income per month.

You will need to sync the subscriptions between devices. I use Parse.com as my backend. Basically, before making an IAP transaction as complete I push the data to parse. Users can then pull that data down onto their device to sync the subscriptions. Parse lets you save the transaction for users with and without accounts. So it has the benefit of giving you real time sales information.

EDIT: Auto Renewable Subscriptions will Change This Fall

Auto renewable subscriptions are drastically changing this Fall (2016). Pretty much every reason not to use auto renewable is going away. https://developer.apple.com/app-store/subscriptions/whats-new/



Related Topics



Leave a reply



Submit