Get help with your SDK implementation.
Recently active
I use expo 49.0.18 and 7.3.0 react-native-purchases.I building my project with eas.I got an error when uploading my aab to the PlayStore, about the Play Billing version 4.0.0 that is not supported anymore. I don’t really understand how can I upgrade this dependency
Should I use the main app’s bundle identifier, or should I create a new app in revenue cat in the same project with the watchkitapp identifier?
Hello,I had to update the SDK to v4.0.0 after Google Play updated their library and now I get the following error from Cordova:> Task :app:checkDebugAarMetadata FAILED Any suggestions how to solve this?
apple, I can receive notification of renewal, but there is no notification of unsubscription
Sorry if this has been answered elsewhere but we couldn’t find any information - hopefully someone can point us in the right direction.We have 2 subscriptions set up in our Google Play Console, each with their own set of offers, and different pricing. Let’s call them SubscriptionA and SubscriptionB - the latter being a “higher tier” subscription (which gives access to more app features etc...).Our users can purchase either of these subscriptions directly, however if they purchase SubscriptionA, first, we allow them to upgrade to SubscriptionB at any point. We have so far done it using the purchasePackage method, like so:Purchases.purchasePackage(package, undefined, { oldProductIdentifier, prorationMode: PRORATION_MODE.IMMEDIATE_AND_CHARGE_PRORATED_PRICE,});This would result in the user being charged the relevant pro-rated price, and the existing SubscriptionA switching to SubscriptionB. This works correctly, as expected.However we are now facing an issue as we have an upcoming promo
Hey all, We’ve got a unique use case for a subscription mobile product (Android & iOS) that is made for households. We want one member to be able to purchase a membership that is then made available to everyone in their household. We cannot fully rely on iCloud Family Sharing because it doesn’t apply to Android devices.We could keep the member’s subscription status in our database and then check if anyone in the household has an active subscription, but I wondered if RevenueCat has a feature that would work for us built in?Anyone tried to solve this before?
Hey RC folks! 👋🏻I’m trying to determine after a purchase is made whether or not the purchase was a trial or not. I’m using `try await Purchases.shared.purchase(product: storeProduct)` to make the purchase. My initial solution was to iterate through the active entitlements i.e `results.customerInfo.entitlements.active` and try to see if there was a trial, but I was wondering if there’s a more elegant way to do so?Thanks in advance!
On my app, users can log in anonymously ( a skip button) or with a full account. Some users due to perhaps not using the app for a long time, have to resign in, but have a tendancy to “skip” when they come back. This triggers a transfer of their purchase to the new anonymous account.It would be great to have a button in the revenue cat panel to undo a transfer or an endpoint I could ping to do so or a way to prevent transfers to certain users.
Hello, My Paywall created a successful subscription with Sandbox account earlier in the day, but now on “Subscribe”, I am getting prompted for AppleID and password and after successful log in and bell sound that indicates purchase was successful, I am back on the login screen, without new subscription purchase on the Sandbox dashboard.
Hello, In the latest SDK 7.1.0, how can I obtain the days of a free trial? Currently I’m hardcoding it like this to “3 Days Free Trial”: private fun fillTrialOrNormal(it: Package) { if (isAdded) { val hasFreeTrial = it.product.subscriptionOptions?.freeTrial != null Utilities().checkTrialUsedUp(it.product.id, hasFreeTrial) { trialUsedUp -> val title: String val header: String if (trialUsedUp) { title = "${it.product.price.formatted} / Year" header = getString(R.string.upgrade_to_premium) binding.premiumTextId.text = header } else { title = "Start Your 3 Days Free Trial,\nThen ${it.product.price.formatted} / Year" } binding.trialPurchaseButtonId.text = title binding.trialPurchaseButtonId.isEnabled = true } }}Many Thanks
Hello, I have a offering where I put a custom description - Annual package with 7 day free trialAnd then I added DisplayName for product as well Monthly package itemNone of these fields were reflected in my api call, here is what I got instead: { "packageType": "MONTHLY", "product": { "title": "Pro Monthly", "identifier": "pro_monthly", "currencyCode": "GBP", "discounts": [], "productType": "NON_CONSUMABLE", "description": "Monthly subscription to access pro features", "priceString": "£14.99", "subscriptionPeriod": "P1M", "productCategory": "SUBSCRIPTION", "price": 14.99, "introPrice": null }, "identifier": "$rc_monthly", "offeringIdentifier": "default" },Why is all of my custom data missing from this product?To make it more confusing this product has a description:Monthly subscription to access pro featuresYet in the dashboard description isn’t even included as a option that you
I’m writing in Swift. Revenue Cat is up to date. When I chose one of my products I get Error Code 15. ERROR: 💰 Product purchase for 'XXXX.XXXXXX.XXXXXX' failed with error: Error Domain=RevenueCat.ErrorCode Code=15 "The operation is already in progress for this product."But of course I only pressed the button once. It displays a Notification to the users showing the error code. Moments later Apple’s Purchase view slides up and it all works correctly. I am still in sandbox and I’m wondering if this is just a sandbox issue. But I don’t want to send this error to production to confuse my users OR even worse, get my update rejected by Apple.Any help would be appreciated. My other products work fine. And I have tried deleting and remaking EVERYTHING surrounding this product/subscription. The error remaines. Also when RC is initiated, in the console, I get this error: “ERROR: Unabled to parse response to create subscription request”Again, I don’t know why this is happening. Everything see
This is the error I’m getting. Is there way to fix it somehow? [Purchases] - ERROR: 💰 Product purchase for 'mw_999_1y_2w0' failed with error: Error Domain=RevenueCat.ErrorCode Code=16 "There was an unknown backend error. Error creating subscriber alias. Alias limit reached. (7255)" UserInfo={NSLocalizedDescription=There was an unknown backend error. Error creating subscriber alias. Alias limit reached. (7255), NSUnderlyingError=0x283f72e20 {Error Domain=RevenueCat.BackendErrorCode Code=-1 "Error creating subscriber alias. Alias limit reached. (7255)" UserInfo={NSLocalizedDescription=Error creating subscriber alias. Alias limit reached. (7255), rc_backend_error_code=7255}}, rc_backend_error_code=7255, readable_error_code=UNKNOWN_BACKEND_ERROR, rc_response_status_code=400, source_function=convertUnsuccessfulResponseToError(), source_file=RevenueCat/HTTPClient.swift:410} thanks
The StoreProduct class in the RevenueCat package (purchases_flutter) contains information about purchasable items, such as subscription details, pricing, and currency. For a typical paywall implementation, one needs to derive various display strings from this class, such as:Monthly price conversion Combined period and monthly price (e.g., "$69.99/yr ($5.83/mo)") Subscription period in full text ("Annual" / "Monthly") Subscription period in short form ("yr" / "mo")...among others. Considering that such functionality is universally needed, I'm pondering the best way to implement these derived calculations.Option 1: Utility FunctionsWrite individual functions within a Utils class.Pro: Centralized location for all related functions.Con: Potential clutter with a Utils class filled with numerous functions.Option 2: Class ExtensionsCreate an extension on StoreProduct to include getters for each needed calculation.Pro: Elegant and intuitive usage (e.g., myProduct.monthlyPrice).Con: Overloads t
The documentation clearly states that to use only custom App User ID, we just need to configure the SDK with a custom app user id. Never calling logout. But my question is tied to multiple users using the same application on same device: do we need to call login() to be safe or anything special when the app authenticates a different user in? This seems to talk about this but not sure when it says login just means actually login()?Also is it ok to configure the SDK much further down in a user flow where only purchases are needed? Say when they navigate to settings->purchases. This way when starting the app (even if user is logged in) we will not configure. This way it will ensure that anonymous IDs will never be created. I am just not sure if this is ok to call configure each time a screen open and if there is any performance impact..
Apologies in advance, this topic is slightly confusing to me. I’ll explain my scenario and what I would expect. This is all in the Sand Box at the moment. Not sure if that makes a difference. When a User A signs up and subscribes, they get 20 credits a month on my app (reloaded at renewal) for X dollars/mo.If a User A signs out, and then User B signs up and subscribes, I want User A to keep their subscription active on the device, and User B as well. When I try “Keep with original App User ID”, I get an error with User B subscribing. I would expect that this new userID is separate from User A’s. But I get the error: “There is already another active subscriber using the same receipt.”I don’t want to transfer the subscription because I want User A and User B to have to purchase.
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
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.
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”
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?
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.
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.