I’m new to RevenueCat and am looking into how I can migrate my existing app’s non-consumable in-app purchases to RevenueCat.
I know this type of question has been asked several times, but none of the answers really answered my question
So far, I’ve looked at using
syncPurchases() but as stated in the documentation:
Google Play Store does not provide an option to mark IAPs as consumable or non-consumable. RevenueCat's SDK will consume all Android IAPs upon purchase.
To replicate the behavior of a non-consumable IAP for Android users, you must ensure your user will not offered the IAP after the initial purchase. Failure to do so will enable the user to re-purchase the IAP.
...and sure enough, in initial testing, as soon as I call
syncPurchases() all of the user’s in-app products are consumed and the Google Play Billing client no longer sees the purchases.
Regarding the first paragraph, when using the Google Play Billing API, we have the option to consume, or not consume the in-app purchase. All of my in-app purchases are one-time payments for lifetime access (i.e. non-consumable).
When migrating to a new service (e.g. RevenueCat), it’s very risky to allow that new service to modify historical purchase data that stretches back (in my case) over 10 years, because what happens if I want to roll back to pre-revenuecat logic? Now I would have to change how I detect purchases (maybe looking at Purchase history instead of active purchases).
Surely I should be able to mark a product as non-consumable, so that when
syncPurchases() is called the product is not consumed, and so Google Play purchase data is not touched?
Regarding the second paragraph, I don’t understand it.
As a workaround, I suppose I could avoid using
syncPurchases() altogether and just using the Billing library to manually grant promotional entitlements instead?