Skip to main content
Solved

`syncPurchases` & non-consumable IAPs


Forum|alt.badge.img+1

Hi,

Before integration with RC, we had only non-consumable IAPs, now we want to release auto-renewable subscriptions with RC SDK.

We added non-consumable IAPs to the entitlement with subscriptions. That seems to unlock a feature under that entitlement for customers with lifetime access.

So what is the benefit of performing `syncPurchases()` for users with lifetime access since they get the access the entitlement already?

Best answer by tina

Hey @Martin B!

The importance of syncPurchases here is to ensure RevenueCat has received the purchase, validated it with Apple / Google, and tracking it on our side. For instance, let’s say a customer is on a previous version of the app before the RevenueCat SDK was implemented and updated to a new version of the app with RevenueCat. Without syncPurchases, the following would happen (like what you observed on iOS):

  1. Launch app with RevenueCat
  2. App would check for an active Entitlement to provide the lifetime lock
  3. Since the purchases aren’t synced with RevenueCat yet, Entitlement would be false and customer does not have access to their purchase 

This isn’t a great customer experience here, which is why we recommend calling syncPurchases upon the very first launch when customers update their app to using RevenueCat SDK for the first time. 

The reason that not calling syncPurchases on Android works in this case is due to a behavior of the Google Play Billing Library. On Android, our SDK will automatically sync purchases once the SDK is configured. 

View original
Did this post help you find an answer to your question?

5 replies

tina
RevenueCat Staff
Forum|alt.badge.img+10
  • RevenueCat Staff
  • 338 replies
  • July 18, 2022

Hey @Martin B 

When migrating purchases from a different subscription system into RevenueCat, we recommend calling syncPurchases once per subscriber programmatically the first time they open a version of your app containing RevenueCat. This method will take the existing device receipt and sync it with RevenueCat.


Forum|alt.badge.img+1
  • Author
  • New Member
  • 4 replies
  • July 20, 2022

Hi @tina,

Thanks for the reply.

Still do not understand benefits of performing `syncPurchases()` for users with lifetime access to non-consumable IAPs.

I understand that it’s your recommendation and it syncs receipts with RevenueCat. And if we were using subscriptions then it would be important to do that. But we do not have any subscriptions, we only have non-consumable IAPs. We will introduce subscriptions but with a release that contains RevenueCat integration. So what if we do not sync non-consumable IAPs with RevenueCat? What do we loose?

Our current integration with RevenueCat:

  • we do not perform `syncPurchases()`
  • non-consumable IAP added to our entitlement
  • we use `customerInfo` to detect an access to the entitlement

everything seems to work fine:

  • users with non-consumable IAPs have access to the entitlement
  • and we see them in RevenueCat dashboard

That has been tested on Android.

 

 


Forum|alt.badge.img+1
  • Author
  • New Member
  • 4 replies
  • July 20, 2022
Martin B wrote:
  • and we see them in RevenueCat dashboard

Although, I’m not sure about the above part (we need to verify that)


Forum|alt.badge.img+1
  • Author
  • New Member
  • 4 replies
  • July 20, 2022

Sorry for the confusion: it seems like on iOS `syncPurchases()` is required to check the access to the entitlement using RevenueCat SDK. Otherwise it returns no access to the entitlement.


tina
RevenueCat Staff
Forum|alt.badge.img+10
  • RevenueCat Staff
  • 338 replies
  • Answer
  • July 20, 2022

Hey @Martin B!

The importance of syncPurchases here is to ensure RevenueCat has received the purchase, validated it with Apple / Google, and tracking it on our side. For instance, let’s say a customer is on a previous version of the app before the RevenueCat SDK was implemented and updated to a new version of the app with RevenueCat. Without syncPurchases, the following would happen (like what you observed on iOS):

  1. Launch app with RevenueCat
  2. App would check for an active Entitlement to provide the lifetime lock
  3. Since the purchases aren’t synced with RevenueCat yet, Entitlement would be false and customer does not have access to their purchase 

This isn’t a great customer experience here, which is why we recommend calling syncPurchases upon the very first launch when customers update their app to using RevenueCat SDK for the first time. 

The reason that not calling syncPurchases on Android works in this case is due to a behavior of the Google Play Billing Library. On Android, our SDK will automatically sync purchases once the SDK is configured. 


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings