Discussion and help from anything related to RevenueCat.
Recently active
Hello,In our Firebase Crashlytics reports, we have noticed a recurring exception being faced by our users related to in-app billing.This issue has 37,775 crash events affecting 1,549 usersHere are the error details:Fatal Exception: java.lang.IllegalStateException: Too many bind requests(999+) for service Intent { act=com.android.vending.billing.InAppBillingService.BIND pkg=com.android.vending cmp=com.android.vending/com.google.android.finsky.billing.iab.InAppBillingService (has extras) } at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:2115) at android.app.ContextImpl.bindService(ContextImpl.java:2024) at android.content.ContextWrapper.bindService(ContextWrapper.java:870) at com.android.billingclient.api.BillingClientImpl.launchBillingFlow(com.android.billingclient:billing@@5.1.0:52) at com.revenuecat.purchases.google.BillingWrapper.startConnection(BillingWrapper.kt:122) at com.revenuecat.purchases.google.BillingWrapper.startConnectionOn
Hi all - hope everyone is doing well!In our app, we have premium access available to users via in-app subscriptions. We are now introducing a ‘promo-code’ system which allows users who are both subscribed/not subscribed to redeem free premium access for a certain duration (1 week, 1 month, etc).For users who are not subscribed, we can simply grant them promotional access through the RevenueCat SDK. For users who are subscribed, the effect should be that their next billing date gets delayed by a certain duration. Our current approach is to transfer them onto a Promotional Offer within their existing product if they are on iOS, and transfer them onto a new product if they are on Android. In both cases, this promotional offer, and alternative Android product have an initial free period.Is this the correct approach to achieve this functionality? I am concerned that by doing this, a user will lose out on their already purchased subscription? For example, If i pay monthly, and have 3 weeks u
Your documentation has the following paragraph:If you wanted to add a 'Lifetime Unlock' purchase option to your app, it is recommended to create a new non-consumable IAP, add the product to your offering, and add the product to your entitlement. This works well in many contexts, such as alongside other subscription packages, or just as a standalone package in your offering. We noticed that this scenario breaks when a user requests a refund for this IAP, as RevenueCat treats the Entitlement as unlocked forever.It would be great when there was an option in the dashboard to at least manually remove an Entitlement (maybe I have missed it?)
Our application only allows user to use it after logging in and purchases as well. The business logic does want to say that a purchase is only tied to one user ID (otherwise users can log out and create new account and connected the purchases to that new account and the log out and go back to the first account and do it again etc). Does this mean that Keep with original App User ID is the only options we should use?If so, how does work to manually transfer or assign purchases to a user say when they delete their account and decide to maybe come back later and restore it into a new user id but still unique?Any advice is appreciated. Thank you
Hey! Is there any way to have discord webhook compatible with Revenuecat? There is an integration with Slack, but regular Webhook in rc and discord does not work together. Any ideas what to do to connect discord?
Hello. We have an emergency production issue that we need to clarify RevenueCat Old Project Name on RevenueCat: STRONG&SXYOld Project ID Code: 532a68e1New Project Name on RevenueCat: STRNGOld Project ID Code: 3f1c3178we need emergency help please that issue effect millions of users
I’ve been looking all over the internet and reading through RevenueCat documentation and have continued to come up short with this. I would appreciate guidance from anyone who has done this before, as it’s driving me crazy.I’m building an iOS app using Ionic/Capacitor and leveraging the brand new @revenuecat/purchases-capacitor SDK to manage receipt validation and the entire in-app-purchase life-cycle for Auto-Renewable subscriptions. I’ve got everything working except for a way for the user to be taken to their App Subscriptions page (should they decide to cancel the subscription).When retrieving customer info (which I do, right after configuration ‘Purchases.configure’) I store the returned managementUrl (which ends up being “https://apps.apple.com/account/subscriptions” for me).My issue is:I know this link is correct; If I enter it into Safari on my phone, it guides me straight to the phone’s App Subscription management page When I navigate to this Url in my app using this.router.
I am trying RevenueCat for the first time. When I compile my project in VS Code since including the purchases_flutter package (latest version: purchases_flutter: ^6.0.0), I receive this warning:Note: C:\Users\User\AppData\Local\Pub\Cache\hosted\pub.dev\purchases_flutter-6.0.0\android\src\main\java\com\revenuecat\purchases_flutter\PurchasesFlutterPlugin.java uses or overrides a deprecated API.minSdkVersion is set to 30 (flutter.minSdkVersion=30)Flutter Doctor info:[√] Flutter (Channel stable, 3.13.7, on Microsoft Windows [Version 10.0.19045.3570], locale en-US)[√] Windows Version (Installed version of Windows is version 10 or higher)[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)[√] Chrome - develop for the web[!] Visual Studio - develop Windows apps (Visual Studio Community 2017 15.8.1) X Visual Studio 2019 or later is required.[√] Android Studio (version 2022.3)[√] VS Code (version 1.83.1) How do I fix this problem?Thank you.
I am using react native library/sdk on Android to complete a purchase and want to get clarification on how to know the purchase completed successfully. Using this example, i call await Purchases.purchasePackage(package)but this evaluates to false:typeof customerInfo.entitlements.active.my_entitlement_identifier !== "undefined"and it is considered not a successful purchase even though in the OS it said purchase was done ok.seems like my_entitlement_identifier is undefined.Any idea why this would happen?The resulting customerInfo has activeSubscriptions populated to it is telling me it was a success. What is the best way to know it was done successfully? Just compare the product id of the purchase with the one inside activeSubscriptions?productIdentifier coming from the promise is just the name of the subscription and does not include the base so that was not enough to tell..
I have implemented RevenueCat in my app and am testing the restore functionality across multiple devices. I use a device identifier as the RevenueCat user ID. This is a UUID generated when I first authenticate the app on first run.When I restore the subscription on another device, the subscription is transferred to the new app user id, and the old device no longer has a subscription to the content. I can get it back by hitting restore in the old device, but then the new device does not get the content too The Apple guidelines state:“Subscriptions must work on all of the user’s devices where the app is available.”How do I ensure that the subscription is available on all devices which the user owns, and has the app installed on? I don’t want to have the person perform a login step.
After following the suggested answer I am still facing the error of“ There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. 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).”
Purchases.shared.presentCodeRedemptionSheet()We encountered an issue when trying to use this code for the promotion redemption.On the iPad, the screen appears normally and I can enter the redemption code. However, after I input the password and receive a transaction completion notification, my app doesn't actually subscribe successfully. Attempting to restore the subscription also doesn't retrieve any successful transactions. This issue persists across all versions we've tried.
I’m using paywall with Android 7.1.0-beta.2The template I create didn’t show, it uses the defatult view.The log error is:Template name is not recognized: 4Displaying default template due to validation errors.I use the template of “Template 4 - Persian Content”
Hello Everyone,I am currently utilizing the RevenueCat SDK in my Flutter project to manage in-app purchases, specifically, monitoring real-time changes in users' subscription statuses. The SDK has been instrumental in achieving this on the client-side, and now, I am looking to sync this data with my backend.In my backend (which is developed using the Elixir/Phoenix framework), I have a database table where I would like to maintain a record of whether a user is subscribed or not. The main goal is to ensure that the subscription status in my backend is always in sync with the real-time status on the client-side.Here are my thoughts so far:One way could be to send the subscription status from the client to the backend every time there is a change. However, I am concerned about the reliability and timeliness of this approach. Another approach could be to use webhooks, but I am not entirely sure how to set this up with RevenueCat and Flutter.I am very interested to hear if anyone has encoun
I’m tired of my charts looking like a line going straight across the top of the screen. It’s impossible to see days when there were lifts or drops in anything. The charts are useless…Here is your chart: Just make your charts like stock charts, or any other useful chart for that matter and don’t start the y axis at 0… Here is the same exact data put into a useful chart in excel. I’ve been asking for this update for over a year, and it’s so simple and will make such a huge difference. I’ve tweeted it, I’ve submitted tickets, it’s like 3 lines of code guys… PLEASE update this.
Hello, Let’s say I have a project called Flexifit that is both on the mobile and the web.I am using revenuecat to handle subscriptions on the iOs app, users are presented with a paywall before signin in, meaning that they could be a “pro” member without user account.After they create account, how do I reliably “attach” the revenue cat user to my database user? Also on top of that what uniquely identifies the revenue cat user? is it the original_app_user_id or is the email address that is used to login to the app store? I want a single source of truth so that I could verify their subscription status no matter what device they are using.The reason for this is that if user decides to go use the web version, I could check their pro status by calling my database and then checking what revenue cat user id belongs to the current user.
I don’t always want to have to develop features on my physical device and obviously we can’t interact with the Simulator on iOS, related to getting offerings for paywalls…what’s the suggested workaround to avoid having to set a subscription in development on simulator?
I want to validate the data sent from RevenueCat to my server via webhooks. The data is JSON, so are there JSON schemas available to do that?
I am trying to integrate RevenueCat into my Flutter app. Regarding Authentication I have the following setup:I have a LocalAuthId, which is created when the app is installed. I think this is comparable to the AnonymousId from RevenueCat, but I’d rather be in full control and also I’m using this ID in other parts of the app. I also have the option for users to either log in to an existing account, or create a new account. In both cases the user would then also have a ServerAuthId, which is connected with their database account in supabase.The expected behavior is the following:Upon installing the app, the user is not signed in to the supabase server, and therefor only has a LocalAuthId for now. I call PurchasesConfiguration(<key>)..appUserID = myLocalAuthId; to configure RevenueCat on the device. The user should be able to purchase a subscription, which would then be linked to this device.Then, if the user decides to create an account, I believe that the purchase should be transfe
Hi there, I currently have some products that are available at certain price points (i.e. $1.00, $2.00, $3.00, etc.) However, when presented to users of other countries, the IAP prices that show up in `offerings.current.availablePackages.map((p) => p.product.price)` show up as the local currency values. One workaround that I can think of is to use the `title` of the product (which I included the USD price on) to parse out the USD price that corresponds with the product, but was wondering if there was any other way? Also on the webhook side, if they purchased a package in their local currency for 4.99 CAD (which corresponds to my $3.49USD IAP), what would I get on the event side? I know there is a `price` field that is supposed to be the price in USD. Will that give me $3.49 or will it just do a direct currency conversion and end up with some approximate amount like $3.60 or something?In the end, I want all the tracking to be done in USD
app store normal subscription works. But I want to set discount offer codes and as stated in the docs I redirect the user with a URL to the app store to redeem the code for the subscription. I see the subscription in the user’s app store but there is nothing on revenue cat and when I try to “restore purchases” there is nothing. Also this offer code is for a subsctiption. The offer is discount for 12 months of subscription. everything looks good on apple side, will revenuecat understand when subscription renews or when subscription is cancelled?
We are integrating revenuecat inside our project as "observer", we have followed the documentation step by step.Our part related to configure our project into revenuecat console is done for both android and ios.but in order to test that out, we got a build for both android and ios, for android it is crashing when making a purchase. but for ios it is crashing without launching the app.for androin we got "no class found exception" but also we add a proguard text file as you mentioned in the documentation
Hi, I have an app that users can log into using either their gmail or their apple id. I want to implement the RevenueCat SDK, but in the docs, it says to configure the SDK as early as possible, usually when the app starts. My challenge if I do that is that, when the app starts, I don’t know which login method the user is going to use and obviously, if they are using gmail, I want to the Google API key and if they are using their Apple Id, I need to use the Apple API Key. Based on the documentation, it is my understanding that the API key is configured in the SDK at the time of the initial configuration.My question is: if my understanding is correct, can I update the PurchasesConfiguration once the user logs in with the right API key? If that is not possible, can i configure the PurchasesConfiguration when the user logs in and “unconfigure" it when the user logs out? If none of these are possible, then how do I do this?Thanks a lot in advance,Bertrand.
Hi Everyone,For some reason in my app, during the registration process, and while updating user details, the paywall pops up, which prompts the user to buy before their setup is complete.That of course generates an RCAnonymous userId in RevenueCat and my firestore database. Prompting the users to navigate to the subscription page would work but relys on them remembering to do it, even after sending reminder emails.Is it possible to call Purchases.restorePurchase() during the FirebaseAuth login flow, after the user has successfully logged in and the user details have been retrieved?Can I call this... _restore() async { setState(() { isLoading = true; }); try { await Purchases.restorePurchases(); appData.appUserID = await Purchases.appUserID; } on PlatformException catch (e) { await showDialog( context: context, builder: (BuildContext context) => ShowDialogToDismiss( title: "Error", content: e.message ?? "Unk
when the user downloads the app, I want the App Store to display the subscription options there, which have to be selected to download. I don’t have any “freemium” options, either you’re subscribed and access or not. Ideally there is no paywall. can this be achieved?
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.