Question

Subscription not transferred when using another device with same account


Badge +5

Recently, we have run into cases where using multiple Android devices leaves our users in a state where they have no entitlements.

 

Repro Steps:

1.) On the RevenueCat dashboard, set “Restore Behavior" to “Transfer Purchases”.

2.) On Device #1….

  - Log into Google Play with your account.

  - Install our app.

  - Launch our app (configure() is called at startup with a null user ID)

  - Create an account. (login() is called with the new user ID)

  - While logged into this new account, purchase a subscription managed by RevenueCat.

3.) On Device #2…

  - Log into Google Play with the same account from Step 2.

  - Install our app.

  - Launch our app (configure() is called at startup with a null user ID)

  - Do not log in yet.

6.) Notice that the subscription that was purchased on Device #1 is transferred from the user’s account to the anonymous user that was created when the application was launched for the first time on Device #2. This is denoted by “Got their purchases transferred from another user” on the RevenueCat dashboard.

 

7.) On Device #2, log into the account created in Step 2. (login() is called with the user ID)

 

Expected Behavior:

The subscription is transferred from the Device #2 anonymous user back to the account that was created on Device #1. The user has a subscription on Device #2.

 

I was under the impression that when the user logs into the user account on Device #2, RevenueCat’s login method would alias the anonymous user to the existing user’s ID. This would maintain the subscription rather than losing it on an anonymous user that can no longer be accessed again.

 

Actual Behavior:

The subscription is not transferred back to the user. It remains on the anonymous account. The user logged in, but has no subscription.

 

Logging out of the Device #1 before logging in on Device #2 also doesn’t work.

 

————————

 

It is worth noting, that if the repro steps are switched up a bit and instead of logging into the same account on Device #2, you create a whole new account, everything works fine.

 

Repro Steps:

1.) On the RevenueCat dashboard, set “Restore Behavior" to “Transfer Purchases”.

2.) On Device #1….

  - Log into Google Play with your account.

  - Install our app.

  - Launch our app (configure() is called at startup with a null user ID)

  - Create an account. (Account #1) (login() is called with the new user ID)

  - While logged into this new account, purchase a subscription managed by RevenueCat.

3.) On Device #2…

  - Log into Google Play with the same account from Step 2.

  - Install our app.

  - Launch our app (configure() is called at startup with a null user ID)

  - Do not log in yet.

6.) Notice that the subscription that was purchased on Device #1 is transferred from Account #1 to the anonymous user that was created when the application was launched for the first time on Device #2. This is denoted by “Got their purchases transferred from another user” on the RevenueCat dashboard.

 

7.) On Device #2, create a new account. (Account #2) (login() is called with the new user ID)

 

Expected and Actual Behavior:

Account #2 is aliased with the anonymous account created when the app was first launched on Device #2. This means that Account #2 on Device #2 now has the subscription. Account #1 on device #1 no longer has a subscription.

 

————————

 

It seems like purchases can be transferred from an account, but never back to it. Obviously, this is not ideal as users who have multiple devices or who buy a new device are left in a state where their subscription is valid on Google Play, but no longer attached to their account. Instead, it is attached to an anonymous account that is no longer accessible.

 

Perhaps some of my assumptions are incorrect. Maybe we need to add a restore purchases button instead of relying solely on configure() / logIn(). The reason I did not add a restore purchase button is because the documentation for restore() says it shouldn’t be necessary:

“You shouldn't use this method if you have your own account system. In that case "restoration" is provided by your app passing the same appUserId used to purchase originally.”

 

Any guidance here would be super helpful. Thank you!


0 replies

Be the first to reply!

Reply