How to avoid product change on iOS (especially with multiple accounts on same device)?

  • 22 November 2023
  • 2 replies

Badge +5

I have this scenario that I am trying to avoid as it is very confusing how to even manage such a subscription:

  1. User1 logs into the app (app_user_id is configured)
  2. User1 purchases the 1 month subscription
  3. User1 logs out
  4. User2 logs in (new app_user_id is configured)
  5. User2 tries to purchase the 1 month subscription and gets “already purchased” error
  6. BUT if User2 tries to purchase the 3 months subscription, iOS allows it (and treats it as product change?)

Will this mean same iOS account has actually made 2 purchases for 2 different users or now the lines are crossed and the first user has been upgraded?

FWIW, I have revenue cat configured to now allow transfers since the entire app is behind a login and each user should have their own subscription per one account.

2 replies

Userlevel 6
Badge +8

Hey @vic-a563d7!

This is expected behavior, unfortunately. RevenueCat associates the purchases from the underlying App Store account to the identified user ID - just logging out and logging in to a new app user ID doesn’t affect the underlying store account, but rather associates the purchases to the newly identified user ID.

If the customer would like to make another subscription purchase, they would have to log out of the App Store account/Apple ID, and sign into a different account on their device. Since Apple only allows a user to be subscribed to one subscription group at a time, there’s unfortunately not a workaround to allow the user to make another subscription purchase of the same product.

Let me know if you have any other questions!

Badge +5

OK thanks I understand how it works now. But I guess still trying to find out if there is a way (in the react native SDK) to find out of this scenario. So I can block it in the business logic of the app. Meaning, all I need to know if the same AppStore account already has a purchase in revenue cat tied to ANY app_user_id. This will help me just hide all the offerings for User2 when they log in and display a message telling them they need to log back to a different account to see/user their purchased subscriptions.

Basically need a mapping of device user ID vs application user ID. Does revenue cat at least expose something kinda of information about the OS user?