About "Restore function"

  • 26 July 2021
  • 5 replies

Userlevel 2
Badge +6

I have done various tests and I would have to ask some questions:
1. Is it normal that after subscribing with a Device with an account, if I install the app on another Device that has the same account, I immediately enable the subscription without the need to restore? This way I never use restore.
I have not done anything in particular so I think the default value is set which is "Transfer purchases".
There is a way to better understand how it works and how you can set the various behaviors because from the doc I have not been able to understand this topic well.
In my app there are two simple subscriptions (monthly and yearly) and I have no special needs (there is no login or anything else in the app) so I opted to have RevenueCat create the user's ID automatically.
Thanks for your attention


Best answer by sharif 8 November 2021, 19:44

View original

5 replies

Userlevel 5
Badge +9

Without having a login or user authentication in your app, it’s not possible to immediately give access to your app only based on a subscription on a user’s other device. This is exactly what restoring purchases is for - so that the user can access their subscription across multiple devices without having a login for your app. For this to work, the user will have to meet the following requirements:

  1. The user will have to sign in with the same Apple/Google account on all of their devices. Meaning if they bought the subscription when they were signed in to the App Store on their iPhone with then they need to sign in to the App Store on their iPad with the same Apple ID to be able to restore their purchases. 
  2. Restoring purchases works on the platform they made the purchase on. For example, a user who purchases a subscription on iPhone can restore on iPad, but not on Android. Similarly, a user who purchases a subscription on an Android phone can restore on an Android tablet, but not iPad. To be able to restore purchases across platforms, you will need a user authentication system. More details in our guide on identifying users.

Transfer purchases is a different feature that tells RevenueCat what to do when a user tries to restore purchases that belong to another user. Transfer purchases means that if a RevenueCat app user ID is restoring purchases that already belong to another app user ID, RevenueCat will transfer the purchases to the new user to make sure that only one user has access to a subscription at any time. Take a look at this section in our guide on restoring purchases.

Userlevel 2
Badge +6

Thanks for the answer, but I would like to better present my case better to understand if what is happening to me is correct.
I have two iOS devices with the same account (in sandbox).
In them I installed my app from Flutter in release mode.
I opted for the ID automatically generated by RevenueCat because I have no user login.
In my plan there are only two subscriptions: monthly and yearly which allow you to access all the features of the app.
I proceed with the first Device to the subscription which takes place regularly.
When I go to open the app in the second Device I would expect not to be already in the Pro version but to have to restore (being another Device). Instead I am already in the Pro version by simply opening the app.
At this point I expect that even when a user changes phone, when he installs my app again, if he has an active subscription, he will immediately find himself Pro, without the need to restore.
Or if a user were to completely uninstall the app and then reinstall it, it would have the same result: it would immediately be Pro without the need to restore.
But then the restore when I use it?

Userlevel 2
Badge +6

As I wrote in the previous post I wanted to know if the described behavior is correct or did I do something wrong?

Userlevel 5
Badge +9

Hey Carlo,

Sorry for the delay here! Didn’t notice the follow ups. In those situations you described where the user changes phones and installs the app again, it’s not expected that the user immediately have access to their subscription. The user should restore purchases or log in to your app to regain access to their existing subscription. If you’d like, you can restore purchases when the user first launches the app by calling syncPurchases. Make sure not to restore purchases on every app launch as this can slow down your app - instead, just call syncPurchases the first time the user launches the app after installing the app.

Userlevel 2
Badge +6

Now that I've published the app in the Store, I've seen that the behavior is as it should be. You can see that with purchases made with sandbox it behaved differently. So everything is ok.
Maybe it's good to tell the users that from SandBox to the real Store there is this change.