Hello 👋,
After nearly two years of using RevenueCat without any Problems, we started to get rejected during Play Store Reviews due to a ‘Broken Functionality Policy’ Violation.
After investigating the issue, it turned out that fetching Offerings from RevenueCat seems to fail on the devices used by the Google Play Reviewers. On those devices the following error is thrown:
PlatformException(23, There is an issue with your configuration. Check the underlying error for more details., {code: 23, message: There is an issue with your configuration. Check the underlying error for more details., readableErrorCode: ConfigurationError, readable_error_code: ConfigurationError, underlyingErrorMessage: There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store. More information: https://rev.cat/why-are-offerings-empty}, null)
The code for fetching the offerings from RevenueCat roughly looks like this
final Offerings offerings;
try {
offerings = await Purchases.getOfferings();
} on PlatformException catch (err, stackTrace) {
// error handling ...
// this is where we end up during Google Play Reviews
} on Exception catch (err, stackTrace) {
// more error handling ...
}
final offering = offerings.getOffering(_PREMIUM_SUBSCRIPTION_OFFERING_ID);
// continue with displaying the offering and so on ...
When testing ourselfes we were never able to cause this error (neither in Sandbox nor in Production), but for the Google Play Reviewers it seems to happen every time.
After digging deeper, we discovered, that the Google Play Reviews happen from 🇮🇳India, but our App is available in 🇩🇪Germany, 🇨🇭Switzerland, 🇦🇹Austria and 🇱🇺Luxembourg only. Accordingly we do not have subscriptions/base-plans/prices configured in the Play Console outside of those countries.
The objection by the Play Store Reviewers is that our app shows a Button that leads to the Paywall-Screen, but then on that screen, it is not possible to do anything, because no offering could be fetched. We do show an appropriate error message, but that doesn’t seem to solve the issue, we have to not show any button or other interactive element, that leads to the Paywall-Screen.
Questions
- Is it intentional, that the
Purchases.getOfferings()
call fails in this situation? What we expected to happen is that it succeeds, but thenofferings.getOffering(...)
would returnnull
to indicate that there is no offering. Or we might have expected it to return an Offering but thenoffering.availablePackages
would be an empty list. - What is the intended way to solve this problem? I assume not many apps have offerings for all countries in the world, so maybe we overlooked something in the documentation?
Setup
- Flutter 3.19.4
- Dart 3.3.2
- purchases_flutter 6.26.0
Potential Workaround
- We will now try to catch the error mentioned above and then handle it in such a way that users receiving this error will simply not see any hint of our Paywall when using the app. I will add an answer to this post as soon as I know whether that makes the Google Play Reviewers happy.