Get help with your SDK implementation.
Recently active
Hello, I am getting following error when syncing purchases or getting subscriber info:Key Value attribute_errors ( { "key_name" = "$idfv"; message = "IDFV cannot be modified."; }, { "key_name" = "$appsflyerId"; message = "AppsFlyer ID cannot be modified."; } ) finishable 1 nserror-code 16 nserror-domain RCPurchasesErrorDomain NSLocalizedDescription There was an unknown backend error. NSUnderlyingError Error Domain=RCBackendErrorDomain Code=0 "" UserInfo={NSLocalizedDescription=} rc_successfullySynced 1 readable_error_code UNKNOWN_BACKEND_ERROR The documentation says I should report the error, so here I am :)Please advise Thanks
How do I do an automatic import of products from App Store Connect? I see that this is a new feature but I couldn’t find the documentation for it. Thanks!
When building an Expo dev client for Android, the build process fails with a Gradle error related to the minSdkVersion required by the com.revenuecat.purchases:purchases-hybrid-common-ui:10.2.0 library. The build process terminates due to a manifest merger failure, indicating that the minSdkVersion of 23 in my project (defined by Expo) cannot be smaller than version 24 declared in the RevenueCat library.Error Message:[RUN_GRADLEW] /private/var/folders/xw/4k1kxhpx04303l7nwzy641br0000gn/T/eas-build-local-nodejs/7fdf107e-ffb6-4e98-a686-8cd5dc9436de/build/android/app/src/debug/AndroidManifest.xml Error:[RUN_GRADLEW] uses-sdk:minSdkVersion 23 cannot be smaller than version 24 declared in library [:react-native-purchases-ui] /private/var/folders/xw/4k1kxhpx04303l7nwzy641br0000gn/T/eas-build-local-nodejs/7fdf107e-ffb6-4e98-a686-8cd5dc9436de/build/node_modules/react-native-purchases-ui/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml as the library might be using APIs not
I’m using the latest version of RC (4.39.0) and am getting crashes on [RCPurchases configure] on everything beneath iOS15.Is anyone else experiencing this?
I am using the Flutter purchases_ui_flutter package and I love it so far. When the paywall screen is shown, the top of the pages shows almost to the top, but not quite. Is there a way to allow the screen to go all the way to the top of the page? Thanks.
Our design calls for displaying the prices of our packages in a value proposition screen before the user has signed in. We want to avoid creating anonymous users at all costs, since this causes issues for our backend in handling RC webhooks. Unfortunately it seems like the RC SDK requires us to have configured Purchases before we can query offerings, and if the user has not signed in then configuring purchases will result in creating an anonymous user ID. Is there a recommended approach to this? It seems like an unnecessary restriction to have a user ID in order to query product offerings. Shouldn’t an API key suffice?
There is an official documentation page for integrating RevenueCat with firebase. The problem is that there are only code examples for Swift, but our team is using RevenueCat within Unity3d game project.Please, can someone help us to do the same using Unity3d firebase SDK by giving us some code examples that mimics the functionality of the swift code in documentation?Also it will be cool if RevenueCat team will see this message and add Unity3d code examples in documentation.
I have a monthly plan with 1-week trial introductory offer for iOS. I use RevenueCat Paywall. If I add a second introductory offer with a discount for the first 3 month, would it work?The other solution is to create a new subscription with discount introductory offer, but without free trial and a new paywall?
ref: www.revenuecat.com/docs/redocusaurus/plugin-redoc-3.yamlall unix timestamps are specified as type: integer - its pretty obvious that e.g. 1708417962662 does not fit into int32 and need format: int64 specified exampleexpiry_time_ms: type: integer description: >- The desired next expiry time to assign to the subscription, in milliseconds since the Epoch. The given time must be later/greater than the current expiry time for the subscription. example: 1708417962662example errorjson: cannot unmarshal number 1711127957264 into Go struct field Subscriber.request_date_ms of type int32 can you please provide a fix for this asap
I pass the Package that I got from Purchases.GetOfferings() to Purchases.PurchasePackage(). 2024/03/18 17:13:58.628 6919 6999 Error Unity NullReferenceException: Object reference not set to an instance of an object.2024/03/18 17:13:58.628 6919 6999 Error Unity at RevenueCat.SimpleJSON.JSONNode.Escape (System.String aText) [0x00000] in <00000000000000000000000000000000>:0 2024/03/18 17:13:58.628 6919 6999 Error Unity at RevenueCat.SimpleJSON.JSONString.WriteToStringBuilder (System.Text.StringBuilder aSB, System.Int32 aIndent, System.Int32 aIndentInc, RevenueCat.SimpleJSON.JSONTextMode aMode) [0x00000] in <00000000000000000000000000000000>:0 2024/03/18 17:13:58.628 6919 6999 Error Unity at RevenueCat.SimpleJSON.JSONObject.WriteToStringBuilder (System.Text.StringBuilder aSB, System.Int32 aIndent, System.Int32 aIndentInc, RevenueCat.SimpleJSON.JSONTextMode aMode) [0x00000] in <00000000000000000000000000000000>:0 2024/03/18 17:13:58.628 6919 6999 Error Unity at Rev
When presenting paywalls using .presentPaywallIfNeeded in Flutter, a progress indicator is missing.Can you please update the Flutter package so that a progress indicator can be displayed during the loading process of the paywall?
I’m trying to understand what this would return if the user is NOT connected to the internet when they first launch the app after a clean install. const payWallResult = await RevenueCatUI.presentPaywallIfNeeded({ requiredEntitlementIdentifier: "pro", });What im suspecting is that it returns PAYWALL_RESULT.NOT_PRESENTED, but this is wrong ,since when you are subscribed and not need the paywall this would be the case as well. So it returns this status if A) you are not connected to the internet (only on clean install) and B) you have a subscription already. This can make users that know this trick - just disable internet and have full access to all features, by just disabling internet for this app. Any advice ?
Hi !Is there a way to get the store country code via the flutter SDK ?
I have both subscriptions and in-app purchases (lifetime unlock). All use the same entitlement (unlock). I would like to differentiate between sandbox and non-sandbox purchases. Specifically, if someone buys in production, that should overrule anything bought in the sandbox, and Sandbox purchases should not be used in Production.The entitlement info provides that information but because it’s a dictionary, it only stores one purchase for the unlock entitlement. Problem 1: If someone buys something in production and later buys something in the sandbox, I believe the entitlement could be “inSandbox” because it’s the most recent transaction, even though there is also a production one (and I prioritize production purchases over sandbox)Problem 2: Non-subscription purchases have a sandbox flag, but TransactionsFactory.nonSubscriptionTransactions() discards that information, so that it is not possible to determine if a non-subscription transaction was purchased in the sandbox (even though tha
Hi there!I’m currently implementing the paywall for my game in Unity. If fetch all offerings via the SDK, and my idea now is to check if the user is eligible for the free trial i have configured on all my products, and make the paywall offer that accordingly.How do I do this in Unity? I don’t find any documentation on it, I feel like I have to run it on different devices, look at the different JSONs the SDK receives, read through the source code, etc. Feels odd for this being such a common use-case.My first idea was if I can check “StoreProduct” objects in the packages of an offer have an “IntroductoryPrice” set, and then offer a free trial. But maybe that one is always set, regardless of eligibility? The existence of the “CheckTrialOrIntroductoryPriceEligibility” method makes me think so. For Android, you write “If Google Play determines that a customer is not eligible for the offer, it will not show up in the subscriptionOptions of the StoreProduct in the SDK at all.” To sum up: I ne
LE: Title fix: How can we know the base subscription plan price that the user is paying every cycle? In our app, we have a screen where we display information about the currently active subscription, including the base plan price per month (or per year). - the price that is paid without any discounts applied Up until now, we got this price by asking the RevenueCat SDK for the current offering. (`getOfferingsWith` in Android) However, we want to increase the price of the subscription for users who will purchase the subscription after the price increase, while keeping existing subscribers on the old price, so we cannot rely on this method anymore, otherwise we’ll end up displaying the new price for old subscribers too, even though they won’t be paying the new price. We are aware of the `price_in_purchased_currency` field in the webhooks, but that will include discounts, and will also be `0` when the user is in trial - that is not what we want to display. Is there a way to get the correct
I am using PaywallView to present the subscription page. Here is the complete code: .sheet(isPresented: $showPaywall) { PaywallView() .onPurchaseCompleted { customerInfo in if customerInfo.isUnlimitedAccessAllowed { navigateToFeature() } } .onRestoreCompleted { customerInfo in if customerInfo.isUnlimitedAccessAllowed { navigateToFeature() } } } Please let me know what do I need to do? Here is the App submission rejection feedback:We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, your app was loading indefinitely on the purchase page. Please review the details and resources below and complete the next steps.Review device details:- Device type: iPad Air (5th generation)- OS version: iOS 17.4Next StepsWhen validating receipts on your server, your server needs to be able to handle a production-signed app getting its receip
I uses RevenueCat Flutter SDK.What happens in Offline in these cases below?1. presentPaywallIfNeeded()2. Purchase attempt.3. If offline purchasing is possible, is CustomerInfo updated once the purchase (subscription) has been made but the user is still in Offline.Extra question:How to learn if there is any cached CustomerInfo data at all?
From the The ultimate guide to iOS subscription testing I found this approach to test subscription restore:One big caveat with iOS testing in the sandbox environment is that there is no receipt file on the device until a purchase is made. This differs from the production sandbox and production environments, where a receipt file is generated at the time of installation. To fully test restoring a purchase in the sandbox, you need to add a button, gesture, or some other means to revert the app to the unsubscribed state.Sign up for a monthly subscription. Use a button or gesture to revert the app to the unsubscribed state. Tap the Restore Purchases button. If you do this before the 35-minute subscription cycle is over, an active subscription should be found, and the app should change to the subscribed state. Question is, how do I perform step 2? Is there any API call I can make to do that?
I am trying to get Features detail from RevenueCat’s Paywall Editor into Unity UI, is there any possible way to do it?These features detail that I want to directly apply to Unity UI
Hello RevenueCat Community,I'm currently working on a Flutter app where I need to manage subscription changes, specifically upgrading or downgrading user subscriptions while handling proration. I'm using the RevenueCat Flutter SDK for this purpose.In native Android, I'm aware that we can use methods like purchaseProduct with PurchaseParams to specify an old product ID and set a specific proration mode (e.g., IMMEDIATE_WITHOUT_PRORATION)I'm trying to achieve something similar in Flutter. My main questions are:How can I specify an old product ID and a proration mode when initiating a subscription change in Flutter using RevenueCat? Is there a direct way in the RevenueCat Flutter SDK to manage these subscription changes while applying proration, similar to the native Android approach?Any guidance or examples on how to properly implement these subscription changes with proration in a Flutter app using RevenueCat would be greatly appreciated.Thank you!
When presenting paywalls using .presentPaywallIfNeeded in Flutter, RevenueCatUI can include a close button. However the color of the close button is always black.Can you please update the Flutter package so that the color of the close button can be customized?
I have installed RevenueCat using SPM (version 4.39.0) but I do not see the xcprivacy file associated with RevenueCat.Xcode 15.3 Privacy Report also does not include RevenueCatWhat am I doing wrong?
My network is working elsewhere. I’m just unable to fetch data from RevenueCat server at this point. [customer] WARN: ⚠️ Attempt to update CustomerInfo from network failed.The operation couldn’t be completed. (RevenueCat.BackendError error 0.)Underlying error: The request timed out.
Hey everyone,I’d like to propose the Logger use `com.revenuecat.Purchases` as the subsystem instead of `Bundle.main.bundleIdentifier`. This is determined in `LoggerType.swift:92`.This would allow utilising the `Hide Similar Items` feature of Xcode 15 console to only hide RevenueCat logs (instead of launching RevenueCat again to change the log level).The documentation of `Logger(subsystem:category:)` does contain:The string that identifies the subsystem that emits signposts. Typically, you use the same value as your app’s bundle ID. For more information, see CFBundleIdentifier.I believe this is advice for logs originating from the app, but when it comes to a dependency like RevenueCat, the app would be considered RevenueCat.You might ask if this then means that if both app and RevenueCat logs wish to be hidden you would need to perform the `Hide Similar Items` twice. This isn’t necessary as you could hide all by hiding the logs of the process which includes your app and RevenueCat.
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.