Cross-platform subscriptions

Hi,


I'm creating an app which allows users to register with my service on any number of devices (web, Android, Roku, iOS, Apple TV), and then purchase a monthly subscription to watch video content. The subscription provides access to the entire catalog. I have my own subscription management API running on a server which I'd like to leverage as the source of truth so users can purchase a subscription on their Roku device, login to the app on iPad, and continue watching where they left off.


Basically, Netflix.


To pull this off in Apple's ecosystem, I have two options as far as I can tell:


  1. Non-renewing subscriptions: users purchase the subscription inside the app though IAP. Once purchase is complete, the app sync’s the subscription to my back-end system. The app interfaces with my back-end any time an entitlement check is required. When a user’s subscription is about to expire, the app must present purchase workflow again.
  2. Skip IAP altogether and require users to subscribe via web.


It looks like auto-renewable subscriptions were designed for selling subscriptions to my type of content (video), but I don't see how I could use them because the subscription must be created and managed inside of iTunes, and there are no APIs available for another platform to check the status of a subscription, nor are there webhooks to notify by system when actions occur (subscription, cancelation, etc).


Am I missing a third option or did I outline this accurately? I'm really curious how Netflix is pulling this off.


Thanks!

Accepted Reply

The app gets a receipt the first time it buys a subscription or restores a subscription. The app can send that original receipt to anyone's server. Anyone's server can then use that orignal receipt to verify the current subscrition anytime it wants. You can't do that with a non-renewing subscription but with a non-renewing subscription the user must purchase the extension from the iOS device each time period.

Replies

You most likely will not want an autorenewable. It is very easy to renew a non-renewing subscription - the app senses it has expired and tells the user to 'tap here to renew'. It takes about 30 seconds every month/3 months/6 months.


You will want to read the Guidelines especially 11.14 to see if you can use option 2.


While some users use both iOS and Android, most users use either iOS or Android. It is only those 'both' users who present a problem to your subscription schemes.

Thanks for the reply.


The more I look into this, the more confused I get about how Netflix is doing this. They use auto-renewing subscriptions and yet somehow honor subscriptions purchased through iTunes across all their platforms (Roku, web, Android, etc.). Apple doesn't offer any APIs into their purchasing platform, so how does Netflix possibly know if a subscription is canceled, renewed, etc. on iTunes?

I believe that with autorenewables if you send in an old receipt you get back a reply that includes information for the most recent receipt

Wouldn't that depend on users using the app though? What happens if I buy a subscription on my iPad, but never open the app again or uninstall it and just use Netflix via Android?

The app gets a receipt the first time it buys a subscription or restores a subscription. The app can send that original receipt to anyone's server. Anyone's server can then use that orignal receipt to verify the current subscrition anytime it wants. You can't do that with a non-renewing subscription but with a non-renewing subscription the user must purchase the extension from the iOS device each time period.

There are 3rd party services that manage cross-platform subscriptions for ya. Eg.

  • Qonversion
  • Revenue cat
  • Zoho