My app has two modes, offline and online. The offline mode (which doesn’t require users to log in) offers users a non-consumable, while the online mode (which requires users to log in) offers subscriptions.
RevenueCat handles the subscriptions part well. However, for the non-consumable part it’s a bit confusing. I’ve read multiple posts here
and
saying that RC will always CONSUME the products.
However, Google’s Billing Library offers two ways to handle non-subscriptions products, one is to acknowledge, another way is to consume (https://developer.android.com/google/play/billing/integrate#non-consumable-products and https://developer.android.com/google/play/billing/integrate#consumable-products). By calling ` BillingClient.acknowledgePurchase()
`, it ensures that it’s treated as non-consumable so that when user tries to purchase this again, Google Play will prompt an error saying “You’ve already owned this item”. By calling `BillingClient.consumeAsync`, it will therefore be treated as consumable and Google Play allows users to purchase this item more than once.
My question is that why does RC have to always “consume” instead of “acknowledge” this purchase?
Also, RC doesn’t provide a way to refund consumables from dashboard, so when we refund the purchase from Google Play, user’s `CustomerInfo` is not updated, this means there is no way we can know if the purchase is still valid. However, if RC provides an option to `acknowledge` instead of `consume`, at least we can rely on Google Play Billing’s api to know that this purchase has been refunded. (`BillingClient.queryPurchasesAsync` will not return non-consumable purchases that have been refunded)