Get help with your SDK implementation.
Recently active
Purchase.addCustomerInfoUpdateListener doesn’t seem to work when subscription is cancelled or expired. Expectation is this callback should be called in this case. However it gets invoked when new package is purchased.purchases_flutter: ^6.24.0
Hi, I am using RevenueCat for using subscriptions in my app. I have configured everything according to the docs. On Apple everything is working fine but on Android, I am facing this issue when I try to get offerings, I get this error There is an issue with your configuration. Check the underlying error for more details.I know there could be some config issue but I have taken the following steps twice:I have followed the guide in this link (https://www.revenuecat.com/docs/creating-play-service-credentials) correctly. I have a checklist of all the things given in this link (https://www.revenuecat.com/docs/google-play-checklists) After going through the community form I found this post ( ) and performed all the steps in it. I am using expo managed project and I have followed this blog to implement it (https://www.revenuecat.com/blog/engineering/expo-in-app-purchase-tutorial/) I have checked all the identifiers in the RevenueCat products page and they are correct as I imported them. I hav
Hi, I’m using Paywalls feature in my SwiftUI App. I want to disable Paywall interactions while purchase is in progress, is there onPurchaseStart callback or something? here is my current implementation: .sheet(isPresented: $userViewModel.displayPayWall) { PaywallView(displayCloseButton: true) .onPurchaseCompleted({ userInfo in print("completed") userViewModel.isPurchasing = false userViewModel.isSubscriptionActive = userInfo.entitlements["pro"]?.isActive ?? false }) .interactiveDismissDisabled(userViewModel.isPurchasing) }
Hello,i integrated revenuecat android sdk in my app recently. Sdk version is 7.7.2.I wanted to downgrade subscription with DEFERRED mode but I couldn’t find it. Therefore, I read document and change log. They said DEFERRED mode has been temporarily removed. However, DEFERRED mode is still in Android dev doc. Is something wrong with DEFERRED mode that it has been removed. Thank you.
Hello I need to modify this file https://github.com/RevenueCat/purchases-android/blob/143cf2a3629c856e0f3848ff6c164d683df8bbc5/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/composables/Footer.ktI have been trying to rebuild the library but has been a real nightmare, very hard to understand the +5 libraries you have like, ui, hybrid, common, google, amazon, and a lot of different packages.Could you help me to build the library I need to modify the structure of the footer I don’t want to create a custom scratch project, just fork or locally modify the library as I’m using the remote paywall feature
I am using Paywalls and when I submit it on iOS, they report this error. And they said they will reject the submission if I cannot fix this bug. Review device details:Device type: iPad Air (5th generation) OS version: iOS 17.4
I replaced my paywall with RevenueCat’s paywall which works great , however I go a rejection from play store due to Subscriptions policy Violation “Your offer does not clearly and accurately describe the terms of your trial offer or introductory pricing, including when a free trial will convert to a paid subscription, how much the paid subscription will cost, and that a user can cancel if they do not want to convert to a paid subscription.”I received the same before when I used to use my own paywall and fixed by changing the package display label to be of the format “You will be charged {price} for {duration} subscription.The subscription will be automatically renewed unless you cancel it`: product.priceString} It is not clear for me how can I customise the package’s label when using RevenueCat’s paywall . Thank you
My app has been public for some time on the app store, yet has been rejected from Google Play twice. Customer support has stated that “Your app contains a subscription but it does not have terms of cancellation.” Our paywall provides a link to our terms of use and includes steps to cancelling subscriptions. They also stated, “ Kindly note that users should not have to perform any additional action to review the information,” implying that a link to our terms of use is insufficient. Is there any way to add this information on our paywall? I have not seen any that include this information but they seem very adamant on this.
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
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.