Solved

Offerings returned empty on iOS 14 - RCPurchasesErrorDomain Code=23

  • 3 December 2021
  • 41 replies
  • 6463 views


Show first post

41 replies

Userlevel 5
Badge +9

Hey @Larry McKenzie,

Unfortunately there is no way to construct an SKProduct yourself, which is the object required by Apple to make an in-app purchase, and what RevenueCat sets under-the-hood as the “Package” in an Offering. The only way to get SKProducts are by fetching them via the SKProductRequest. Any app you see with in-app purchases on iOS must use this same method. They need to be fetched from Apple so they can set them to the correct price and currency of the underlying Apple account logged in on the device and confirm it’s a valid product configured in App Store Connect.

 

what would happen if a user tried to purchase them and I passed a valid product id to the revenue cat sdk even though it was not loaded via the revenuecat get offerings API?

If you use the .purchaseProduct() method, you’ll need to pass in the SKProduct directly so you would still need to fetch it from Apple first.

Badge

@ryan Thank you for the clarification. 

It sounds like resolving this error might not be something you can do. My in app offerings do not really change. If I configured an alternative way to fetch them so that I can display them to my users what would happen if a user tried to purchase them and I passed a valid product id to the revenue cat sdk even though it was not loaded via the revenuecat get offerings API?

Userlevel 5
Badge +9

If there is no network request why does the error mention a potential timeout?

Sorry, no network request to RevenueCat - the timeout is on SKProductRequest that connects to Apple. 

 

A configuration error also seems unlikely because this is working for most users.

Yeah, configuration issue would be 100% failure. This is most common in sandbox if something isn’t hooked up right which is why we link to that article in the error message - I don’t think it’s applying in your case if you’re seeing it randomly in production.

 

The RevenueCat SDKs used to not return an error in these cases and products/offerings would just be null if they couldn’t be retrieved. We added an error response toward the end of last year so the getOfferings call would return an error: https://github.com/RevenueCat/purchases-ios/pull/879. This way would could provide a more useful message to developers and the end result is still the same - offerings are empty. This could explain why you started seeing it only after updating the SDK. The empty Offerings have always been happening but now you have visibility into it with an error being returned? 

Badge

Thanks Ryan, I am seeing a growing number of this error. Retrying does not resolve the problem. If there is no network request why does the error mention a potential timeout?

PlatformException(23, None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).This could be due to a timeout, or a problem in your configuration.More information: https://rev.cat/why-are-offerings-empty, {code: 23, message: None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).This could be due to a timeout, or a problem in your configuration.More information: https://rev.cat/why-are-offerings-empty, underlyingErrorMessage: , readable_error_code: CONFIGURATION_ERROR, readableErrorCode: CONFIGURATION_ERROR}, null)

 

A configuration error also seems unlikely because this is working for most users. This error started happening after updating the Flutter SDK to 3.8.0. 

Userlevel 5
Badge +9

This happens in production when the SKProductsRequest fails: https://developer.apple.com/documentation/storekit/skproductsrequest

Usually pretty rare, but sometimes there’s moments of higher unavailability. There’s no network request on the RevenueCat side so we don’t have a ton of insights into the error rate at scale since we don’t log anything.

Badge

I am seeing this error in production on a range of iOS versions. It does not impact most of my users but I am not sure why it is impacting the ones it is. Any insight would be valuable.

Badge +1

Hello, I have the same issue. Everything works correctly on iOS 15. When I run the app on an iOS 14 simulator, I get following error:

Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).

This could be due to a timeout, or a problem in your configuration.

My project setup is:

  • SDK Version 3.13.2 integrated via SPM
  • macOS Monterey
  • MacBook Pro with M1 Pro
  • Xcode 13.2.1 (13C100)

Unfortunately I don’t have access to a device with iOS 14, so I cannot test it on a real device. But the fact that the SDK is working on iOS 15 simulator and it isn’t working on iOS 14 simulator is worrying to me.


@ryan Do you have any updates on the situation? Thanks in advance.

Badge +7

I think this has something to do with revenuecat being blocked on some WiFi networks.

Badge +1

Same issue here, 

ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "There's a problem with your configuration. There are no products registered in the RevenueCat dashboard for your offerings. To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings.

More information: https://rev.cat/why-are-offerings-empty" UserInfo={NSLocalizedDescription=There's a problem with your configuration. There are no products registered in the RevenueCat dashboard for your offerings. To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings.
 

Error happens on both iOS 14 and 15 on real devices. Set up works fine using StoreKit configuration file and prints this error when fetching products when removing the configuration file from our schema. Products are all ready to submit and all App Store connect forms and documents are up to date. 

Edit: Using SDK Version - 3.13.1

Badge +7

I’m getting the same. 10 or so different users. iPad and iPhone. All on iOS 15. Seemed to start at Dec 15, 2021, 9:14:41 PM. All App Store Connect forms signed. 

 

Non-fatal Exception: FlutterError
0  ???                            0x0 StandardMethodCodec.decodeEnvelope + 607 (message_codecs.dart:607)
1  ???                            0x0 MethodChannel._invokeMethod + 156 (platform_channel.dart:156)
2  ???                            0x0 Purchases.getOfferings + 125 (purchases_flutter.dart:125)
3  ???                            0x0 PurchaseController._initRevenueCat + 57 (purchase_logic.dart:57)

 

PlatformException(23, None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). This could be due to a timeout, or a problem in your configuration. More information: https://rev.cat/why-are-offerings-empty, {code: 23, message: None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). This could be due to a timeout, or a problem in your configuration. More information: https://rev.cat/why-are-offerings-empty, underlyingErrorMessage: , readable_error_code: CONFIGURATION_ERROR, readableErrorCode: CONFIGURATION_ERROR}, null). Error thrown null.

 

 

Badge +5

@ryan we’re using Purchases iOS SDK v.3.13.1. Thanks for looking into this :) 

Userlevel 5
Badge +9

@Neybox Digital can you confirm the SDK platform and version that you’re running? It should be one of the first debug log outputs. I’m going to try and build our sample app and see if I hit this. Never heard of an OS specific issue fetching products on a physical device.

Badge +5

Hey, Ryan. The paid applications agreement is active on our account and no updates appear to be available. We went through the article but everything appears to be correctly setup on both ASC and RC as far as we can understand. It’s weird that we can reproduce this only on iOS 14 and not on iOS 15, so I guess that the general setup should be fine. Is there anything iOS 14 specific that we need to be aware of?

Userlevel 5
Badge +9

Hmmm that’s strange it’s not working on a physical device it sounded like a StoreKit config issue being OS specific. I logged into App Store Connect recently and noticed they did update the Paid Applications Agreement, so you could triple check that document is signed since it could cause things to suddenly break. 

That specific error indicates that the product IDs configured in RevenueCat are not available through StoreKit, so something in this article is most likely the underlying cause: 

 

Badge +5

Hello Ryan and thanks for the response. We did re-upload the certificate but to no avail unfortunately, the error still persists. We have also tried on device and still getting the same behaviour. Any other ideas?

Userlevel 5
Badge +9

From the error message, it could be something with the StoreKit Configuration file as well. If you’re making changes to the build target (iOS 14 vs iOS 15) you may need to re-upload the public certificate to the RevenueCat dashboard: https://docs.revenuecat.com/docs/apple-app-store#step-4-uploading-the-public-certificate-to-revenuecat

Testing on a physical device could also help and is what I always try to recommend. 

 

 

Reply