Skip to main content

I have an app which is available both on App Store and on Google Play.

What should be the correct, expected (or even required) behavior from this app when handling a user’s subscriptions on these two platforms?

I’d like to break this question into the following use cases:

  • If the user has an iPhone and purchases a subscription via Apple, should this subscription be also reflected for him if he logs in to the app on an Android device without paying anything to Google? Or should I also require that the user purchases the same subscription via Google if he wants to have access to the Android version paid content of the app?
  • Likewise, if the user has an Android device and purchases a subscription via Google Play, should I make the app premium content available for this same user also on the App Store (iOS app version) without the user also paying Apple for the subscription service? (Which I think the answer is probably really NO when looking at it from Apple’s perspective).

In other words: if the user wants to have access to premium features on both platforms (Android and iOS), he should purchase two subscriptions, being one billed by Apple and the other billed by Google? Which means I’ll be having double revenue from this user if he opts to have the app on both platforms? (Which now sounds more sensible to me, because it will be kind of two instances of my service running on different platforms, regardless if it is the same user or not.). It of course also means the user will be getting two invoices every month to maintain his monthly subscription active on both platforms.

Is it possible, allowed or recommended to offer a way for the user to pay only once (either only for Google or only for Apple) and still have access to premium features on both platforms? (Which again sounds a bit weird because it would mean either Google or Apple would be way too nice on giving a subscription for free in practice).

Now in design terms, does this all mean the subscriptions should be regarded as two different products, one charged on Android and the other charged on iOS? I think RevenueCat makes everthing to look like as if it was a single proccess, but it is then actually two twin billing proccess running each one on its on platform. Is that true?

 

 

Hey @UlyssesAlves,

Is it possible, allowed or recommended to offer a way for the user to pay only once (either only for Google or only for Apple) and still have access to premium features on both platforms? 

 

Is it possible/allowed? Yes it is!

Sharing app subscription across multiple platforms (and apps) is a use case that is totally support and also used by a lot of our customers. There is a page in our docs that explains that - https://docs.revenuecat.com/docs/user-ids#sharing-subscriptions-across-apps-and-platforms.

A summary of that is that in order to share your subscription, you will need to be able to identify the user with the same App User ID on both platforms. You will need to make sure that both of your iOS and Android apps are set up in the same RevenueCat project. App User IDs are shared between apps within the same project. But also note, this usually requires a backend service of your own or some other authentication method to verify that user.

 

Is it recommended?

This is hard to answer because that is a business use case that we cannot really decide. But as mentioned, RevenueCat is built to support this and a lot of our customers do use this. It is a nice benefit if the user will occasionally need access on another platform (example: they have an Android phone but also an iPad) but also you need to consider your costs into having multiple platforms.

Is this two different products?

This would be two (or more) different products because you’ll have products on the Apple side and products on the Google side. But if you use RevenueCat’s offerings system, the different platform products can be grouped into a “package” and it will make maintaining alike subscriptions easier. Also, giving your products “entitlements” will also make this easier so that you don’t have to look at which products have been purchase. You can simply check the customer info for an active entitlement (example: you can tell your products to unlock the “pro” entitlement for the user while the subscription is active)
 

Hope this helps but let me know if you have any further questions! 


Thank you for the reply, @joshdholtz .

When my app requests the subscription status, RevenueCat looks at both App Store and Google Play to check if there is an active subscription in either of these stores? I thought when the app is running on Android RevenueCat would check the subscription status from Google Play, and when the app is running on iOS then RevenueCat would check the subscription status from App Store.

The link you shared says the following:

A user can only manage their subscription on the platform it was purchased from.

Basically then I will charge my users only on the first device he uses to acquire the subscription, allowing the user to manage his subscription only in this device platform, and checking the subscription status and unlocking non-free content in his other devices/platforms. Right?


@UlyssesAlves 

RevenueCat keeps the track of latest subscription statuses from both App Store and Google Play. RevenueCat gets notifications and also refreshes the receipts to make sure that our status of the subscriptions stays up to date. So when the Android and iOS SDK check to see what entitlements (permissions) that user has, it goes against the RevenueCat database for that customer. As soon as we see a change in the subscription status from Apple or Google, we will update it so the mobile SDKs can also get that.

So this is how the subscriptions are shared cross platform 👆The status on RevenueCat’s side and you can get a hold of it on both platforms by making sure that you are logging in with the same App User IDs on each platform.

Basically then I will charge my users only on the first device he uses to acquire the subscription, allowing the user to manage his subscription only in this device platform, and checking the subscription status and unlocking non-free content in his other devices/platforms. Right?

This is correct!  👆


Reply