Get help with your SDK implementation.
Recently active
We’ve been using RevenueCat forever and recently updated to 4.13.1 and instrumented the app properly so this behaviour might have been present in the past but we wouldn’t have known it.About 20% of our users who attempt purchase fail due to RevenueCat returning a nil package. We’re not sure what could cause such a large percent of them to fail and if that’s normal (i.e. 20% of users are launching our app for the first time without Internet connectivity?). Has anyone else seen those failure rates that high?
my app working fine in ios and android but from yesterday i have a issue in ios failed to get offerings 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 app is in production from many month . i didn’t change thing in revenuecat or apple Store .
Let’s say we have a 3 month offer in the App Store for a monthly subscription.From the documentation, it seems clear that the `offer_code` field will be present on the webhook that corresponds to the first purchase made where the offer code was redeemed (the first month in my example above).What is not clear is whether the following two renewal webhooks will have `offer_code` populated as well, since they would be discounted due to the redemption of the offer code.So to visualize it, I’m wondering if it would look like:Month 1 (offer code redeemed) - `offer_code` is presentMonth 2 (discounted renewal) - `offer_code` is presentMonth 3 (discounted renewal) - `offer_code` is presentMonth 4 (renewal at full price) - `offer_code` is not presentORMonth 1 (offer code redeemed) - `offer_code` is presentMonth 2 (discounted renewal) - `offer_code` is not presentMonth 3 (discounted renewal) - `offer_code` is not presentMonth 4 (renewal at full price) - `offer_code` is not presentCan anyone tell m
We would like to receive App Store Transaction IDs when calling the REST API https://api.revenuecat.com/v1/subscribers/app_user_idI have seen other posts where developers request this, and the response from ReveneCat has been to use the Webhook.I am aware that the ID is provided in the Webhook and we are using this, however, this is not a completely satisfactory solution.Issue 1: Missed Webhook CallbacksIf for whatever reason our server does not receive/process the webhook callback then we will never know the transaction/order ID. We have logic in our app and on our backend servers that calls the RevenueCat API’s to refresh/sync user’s subscriptions. Without a transaction ID we cannot guarantee the uniqueness of a subscription.Issue 2: Legacy MigrationWe are migrating from native implementations of our app to Flutter. In that effort we identified RevenueCat as a great solution. However, we still have legacy customers and our backed depends on using the transaction Id’s from the App Sto
Hello, I am upgrading a pretty old project build on Ionic/Cordova/Angular with latest packages, and I am encourteing an issue on Android.I upgraded my project to ionic 6 and Angular 14. I also upgraded all plugins with @awesome-cordova-plugins. RevenueCat plugins are also updated.package.json:```"@awesome-cordova-plugins/purchases": "^6.2.0","cordova-plugin-purchases": "^3.3.3",``` Everything works fine on iOS. I ran into an issue when I try to build for Android I upgraded minSdk to 31, and installed JDK 11.Ionic documentation says we must use JDK 8, but I can’t build anything too because it needs sdk >= 31. config.xml:``` <preference name="android-minSdkVersion" value="22" /> <preference name="android-targetSdkVersion" value="31" /> <preference name="android-compileSdkVersion" value="31" />``` terminal:```[cordova] /Users/user/Sites/project/ionic/platforms/android/app/src/main/java/cc/fovea/PurchasePlugin.java:386: error: cannot find symbol[cordova]
Hiya! Our paywall screen has a “[currency]0.00” — free option, with the currency based on offering?.availablePackages.first?.product.priceFormatter?.locale. With StoreKit 1, this properly returns the expected, matching locale, like Optional(en_US@currency=INR (fixed))But now that we’re starting to test out StoreKit 2 support, we get back Optional(en_US (autoupdatingCurrent))...when using a .storekit file with the storefront changed via Editor > Default Storefront. We can also reproduce this on device. It’s unclear to me if this would be a RevenueCat or a StoreKit 2 bug?
Hi there!I’m trying to update cordova-plugin-purchases to a version that uses Google Billing Library version 4, as I can no longer submit to Google Play with my current version.I removed 2.1.1 that I was using and tried to install 2.4.2 with the following result:src-cordova % cordova plugin add cordova-plugin-purchases@2.4.2Installing "cordova-plugin-purchases" for androidInstalling "cordova-annotated-plugin-android" for androidSubproject Path: CordovaLibSubproject Path: appSubproject Path: CordovaLibSubproject Path: appInstalling "cordova-plugin-purchases" for iosPlugin dependency "cordova-annotated-plugin-android@1.0.4" already fetched, using that version.Dependent plugin "cordova-annotated-plugin-android" already installed on ios.Running command: pod install --verboseFailed to install 'cordova-plugin-purchases': Error: pod: Command failed with exit code 31 at ChildProcess.whenDone (/Users/XXXXXX/quasar/tptk2/src-cordova/node_modules/cordova-common/src/superspawn.js:136:25) at
After upgrading Xcode I have this error and build failed.“Stored properties cannot be marked potentially unavailable with '@available' “Error is in BeginRefundRequestHelper.swift,ProductsManager.swift,PurchasesOrchestrator.swiftIs there any solution please?
I’m implementing 2 promotional offers, and have been following the official documentation. I tried to add the source code in the docs to obtain the promotional offers, like this:if let discount = package.storeProduct.discounts.first { Purchases.shared.getPromotionalOffer(forProductDiscount: discount, product: package.storeProduct) { (promoOffer, error) in if let promoOffer = promoOffer { // Promotional Offer validated, show terms of your offer to your customers } else { // Promotional Offer was not validated, default to normal package terms } } } but I don’t know how to obtain ‘package’, which appears in the first line of the above code.
Hello,I have a bug where my Yearly package is missing in Release builds (but works in Debug and App Store, fails in TestFlight and App Review). My Lifetime and Monthly packages are returned file, and my Monthly package is part of a subscription group with the yearly I have checked:All IAPs are Approved All agreements are signed and active I am not using a StoreKit configuration file I have read the Why are offerings or products empty? help article, and verified everything.App Review has returned both Error 2 and Error 9 I will copy and paste the identifiers from both App Store Connect and RevenueCat here:Lifetime Package:ASC: com.willbishop.Simmer.simmeprolifetimeRevenueCat: com.willbishop.Simmer.simmeprolifetime Monthly:ASC: com.willbishop.Simmer.simmerpromonthlyRevenueCat: com.willbishop.Simmer.simmerpromonthly Yearly ASC: com.willbishop.Simmer.simmerproyearlyRevenueCat: com.willbishop.Simmer.simmerproyearly They are all a part of an offering called “Pestle Pro”, and are fetched like
Hello,I am in the process of migrating one of our apps to Jetpack Compose which is using RevenueCat for processing purchases. Earlier, the code to make the purchase was inside the Fragment and hence I was able to pass the Activity Context while calling the purchasePackageWith() function. However, now the code to make the purchase is moved to the repository where I am injecting the Context using Dagger Hilt. Since, the injected code is an Application Context I am unable to call the purchasePackageWith() function. I tried getting the Activity Context using the below code but it doesn’t work. fun Context.findActivity(): Activity? = when (this) { is Activity -> this is ContextWrapper -> baseContext.findActivity() else -> null} I can pass the Activity Context from the composable screen to the repository via ViewModel but that may leak the activity. So, is there any proper approach to do the same?
User John Custom App ID: 8EFA Android Device A Android Device B Goole Play Account: John Goole Play Account: TomScenario:John logs in RevenueCat device A(John account) with custom ID(8EFA) and purchases Subscription $5 monthly Item. John logs in RevenueCat with the same custom ID(8EFA) device B(Tom account). Click the $10 monthly subscription Item.Expected Result: Pop up Message “The current Google Play Store account does not match the account you paid for” and link the managementURL deepLinkActual Result: Purchase process again. What I have done:I read this question. and Idea with Google Play Developer APISave play store account ID after purchase(using billingFlowParam?? or receipt) When subscription event fire, check current play store account and saved store accountHere is the questionHow to know current Google Play account Is it accurate above idea? or I would love to better idea
Hey! I have added the revenue cat uri on my project for server notifications on apple connect but it still does not trigger when it should. I added the revenue cat uri to both production and sanbox as version 2.When trying my subscription and the webhooks on play store it works as expected, but ios does not trigger until i open the app or like 15 min+ after it should. Any ideas why it does work or why it does not trigger?
Hello!Would it be feasible as a feature suggestion to have a “dynamic” observer mode setup? Use case: we have existing non-consumable IAP transaction handling code we would prefer not to touch, but subscriptions would be newly added, and handled entirely via the SDK. It would be nice to allow adding a callback in the form (StoreProduct) -> Bool to be able to split transaction management duties between the SDK and our own PaymentObserver. We will probably just migrate it to RC, but I think it makes sense as a feature request nonetheless. Best regards,Rafael
After successfully activating a subscription in the sandbox, subsequent calls don’t appear to contain updated subscription info (the user’s subscription is still inactive)Is this the expected behavior in the sandbox environment?
Hello! Thanks for the awesome job on RevenueCat!I’m adding local StoreKit Testing support for quick device/simulator purchases and edge case testing to an app. The Xcode IAP server generates transactions which have increasing numerical IDs, that are obviously not unique. I can see that when registering them on RC, the server side does some magic to make it look real (i.e it seem to have added the local certificate name + purchase date nanoseconds epoch + the fake Xcode transaction ID). "purchased_at_ms": 1669666772000, "store": "APP_STORE", "takehome_percentage": 0.7, "transaction_id": "StoreKitTest_Transaction_1669666772000_11"The transaction from StoreKit / RevenueCat SDK is actually just “11”I have reproduced that logic on my test code, but it would be cool for RevenueCat to abstract that and provide us with this modified ID instead of the raw one from StoreKit, even if it is an additional field on the transaction instead of replacing itBest,Rafael
I have one offer that contains two packages. One of them includes an introductory offer (1-week trial). I just need to retrieve the introductory offer's data programatically. Thank you.
I am unable to load an IAP/subscription after it has been approved for over 48 hours. Left a comment on an older post, but wanted to make a second thread for visibility. (Hope that’s cool) If I run the app on simulator, a local device, or test flight everything loads perfect.Subscription has been approved for over 48 hours. Subscription loads fine on local/testflight. Filled out all agreements.App is in pending developer release. I downloaded the app from the app store with a generated code, and in app purchases do not work.I ran the production app and plugged my phone in to view the console. Still getting “Could not find SkProduct for ( “my_product_name”) There is a problem with your configuration”, but only in production. “my_product_name” is not in the actual log, I did not include my real product name. I was wondering if there is anything I could still be missing, or do I need to wait longer? The in app purchase was approved on Saturday at 11 AM. It is not Monday, 6:45 PM.Any help
Google has just announced changes to how they handle subscriptions: https://developer.android.com/google/play/billing/compatibility and https://support.google.com/googleplay/android-developer/answer/12124625 While existing subscriptions will continue to work, there are new ways to create offers and even new (on Android) subscription types like prepaid. Does RevenueCat already have a timeline how and when all of this will be supported both in SDK and dashboard? FYI: I’m also seeing the following warning in our Play Store account - I guess RevenueCat is using the InAppProduct API: “You're using the InAppProduct API to manage subscriptions, which is no longer updated. Start using the new Subscriptions API to get new features including multiple base plans and offers, as well as prepaid plans.”
Im having some problems installing the revenuecat package using swift package manager. This happens when I try and clone a project from scratch and install the required packages. The error reads“Dependencies could not be resolved because no versions of “purchases-ios” match the requirement 5.5.0 and root depends on “purchases-ios” 5.5.0.”If anyone could has experienced this problem before and knows of ways to solve it that would be very helpful. Thanks! Michael
I have a problem when trying to add Service Account Credentials JSON.I’m using the same file that I've used in the past, for 4 different apps, but now I’m getting an error. I’ve noticed that previously we had to copy-paste the content of the json file in the text field, and now we’re adding file itself (this image is from the documentation). Also, I’ve checked that service account has appropriate permissions for all of my apps.
Since calling `.configure` with the app user id automatically transfers purchases to the new account on Android according to the docs, is there any reason to manually call `restorePurchases` on Android? Also, does `logIn` also transfer purchases on android, or just `.configure`? should I call `.configure` again when the user changes accounts?
trying to create some simple consolidated reporting using the actual product description and I dont see a way to get more that product identifier through REST API using getOfferings… is there another way to get the desired information.
Hey All, my app got approved with RevenueCat implemented. The button to make a purchase shows up in TestFlight, but it is not showing up in my production app. This would mean that either currentOffering equals nil or there are no availablePackages. However, I do not understand why it would work in TestFlight. Any suggestions?
Hi,In my app I am calling Purchases.getOfferings() .If I build my app and submit it with eas, and then install it on the mobile device with test flight:eas build --platform ios --auto-submitThen the offering list is returned as expected. But when I try to run it for debugging with --dev-client , on my mobile devicenpx expo start --dev-clientThen the following exception is thrown:failed {"code":"23","message":"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). \nMore information: https://rev.cat/why-are-offerings-empty","domain":"RevenueCat.ErrorCode","userInfo":{"readableErrorCode":"CONFIGURATION_ERROR","readable_error_code":"CONFIGURATION_ERROR","source_file":"RevenueCat/OfferingsManager.swift:125","source_function":"handleOfferingsBackendResult(with:completion:)","NSLocalizedDescription":"There's a problem with your configuration.
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.