Get help with your SDK implementation.
Recently active
Hello,I’ve read all the other community posts for this issue and can’t seem to get to the bottom of it. I’ve also been through the Why are offerings or products empty? post.I’m running a Capacitor app with NextJS using @revenuecat/purchases-capacitor 9.0.4. I have configured Purchases with an apiKey and confirmed with Purchases.isConfigured() and Purchases.getCustomerInfo() - both coming back as expected.When calling Purchases.getProducts({ productIdentifiers: [‘my-product-id] }) I’m just getting back an empty array, no errors.My Service Account Credentials JSON is verified and I even imported the subscription product from Google Play, so I know the connection is working ok. When viewing the product within the RevenueCat dashboard I see “Store status: Ok”. The subscription is both active and backwards compatible within Google Play.I have a closed track release with a tester added (myself) and still no luck when trying on a device. I have also tried using Android Studio with a physical
Im using React Native and have setup my Paywall to include an introductory offer if eligibleFor example - {{ sub_offer_duration }} Free then {{ price_per_period }} Unfortunately my Paywall does not show the introductory offer, even though I am eligible.This is true on TestFlight & SandBox. New users and existing. When I start the Apple Payment Dialogue, Apple actually shows me the introductory offer - So this seems to be a problem with RevenueCat. Does anyone have a solution for this?
Hi Everyone,In the case that a user has a payment problem or their payment is past due, I would like to help them navigate to a place where they can manage their payment info (in case they need to update their credit card number or something similar). The managementURL property just sends the user to a general area for managing subscriptions, but there is no way to manage payment details from there.Is there any way to send the user some place where they can view and update their payment details?TIA!-Mike D.
'm developing a subscription-based app on Flutter for Google Android and have run into a challenge with the platform's limitations on subscription management. Specifically, Google Play does not allow developers to programmatically cancel or modify subscriptions on behalf of users. Users must manage their subscriptions directly through the Google Play interface, which complicates the process of upgrading to a new subscription tier within the app.Challenge: Google Android’s policy requires users to manually cancel or modify their subscriptions, which can disrupt the user experience and reduce conversion rates for subscription upgrades.Proposed Solution: To address this, I am considering a hybrid approach using RevenueCat's customizable paywall feature. The idea is to still use the RevenueCat paywall for managing subscriptions but to augment this with additional UX elements that guide users through the necessary steps to manually cancel their current subscription before upgrading.Implemen
Probably related to Using React Native PaywallFooterView. There is a general lack of flexibility to control what happens behind this component.I attached a picture of my paywall running on an iPhone 6s simulator running iOS 15. There is no way to control the font scaling for this view, rendering it completely unusable for users who have bigger font sizes. As you can see, my custom paywall design is hidden behind this huge footer.I read that you are currently working on improving paywall design, but still wanted to report this use case so it’s taken into account.
Hello, `ERROR - The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit`.I was recently rejected from app store review due to this weird RevenueCat bug ("react-native-purchases": "5.13.0") that I sometimes experience.I believe that I have set up all of my code correctly, but when clicking on a subscription purchase (using the purchaseProduct method - `const purchase = await Purchases.purchaseProduct(identifier, null, Purchases.PURCHASE_TYPE.SUBS);`) the request can fail and throw the following error. “The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit.” It seems that this error will happen in patches 5-10 times in a row, then once I see one success, they are all successful from there forward (the purchase modal shows up with the product, and the user can subscribe to my subscription). Now when I go back into the app, I cannot reproduce the bug as it will be
Hi there - Since this topic has been brought up multiple times and left unanswered; I’d like to raise it again for Unity SDK. Android/iOS Native applications might be easier to add/remove code snippets, but with Unity wrappers accessing native code, it is much trickier and opens up potential pitfalls. Currently - our single source of truth for subscription revenue tracking is Adjust. We are using Unity’s IAP Package to complete the purchase and afterwards passing following data points to Adjust from the Client so that they can keep validate/track and attribute the revenue to the right marketing source.Apple transactionId originalTransactionId GooglePlay orderIdReference Adjust SDK Doc: https://dev.adjust.com/en/sdk/unity/v4/features/subscriptions#record-the-purchase-region-ios-onlyI’d like to retain Adjust still as single source of truth - my priority concern Revenue - Marketing attributions. However, RC SDK doesn’t give any option to access these variables and I need to find workaroun
I have an application on React native Expo. In this application I want to show Paywall.I use expo@51.0.36 and expo-router@3.5.23. OS - android. Same problem on physical device and emulator. import { View } from 'react-native';import RevenueCatUI from 'react-native-purchases-ui';const PaywallPage = () => { return ( <View style={{ flex: 1 }}> <RevenueCatUI.Paywall /> </View> );};export default PaywallPage;When I open a page with Paywall component, everything works, the component is displayed correctly. But if you go to another page and go back to the page with Paywall, the component disappears. What could be the problem?
so basically, I have a bare minimum paywall that is only set in English, and I want anyone viewing the paywall to view it in English. now the problem is when the device language is English everything works fine. but once the device language changed for example arabic the paywall packages will not show.device in english:device in Arabic: the issue only happen in old iPhone device (iPhone 7, ios 15.8.3)tried it on new iPhones it works I am no sure if it’s going to happen to other iPhon models what could be the problem?
Added this packages:purchases_flutter: ^8.1.6purchases_ui_flutter: ^8.1.6 Error: Purchases instance already set with the same configuration. Ignoring duplicate call.D/[Purchases] - DEBUG(21300): ℹ️ Listener setE/PurchasesUIFlutter(21300): Paywalls require your activity to subclass FlutterFragmentActivityI/flutter (21300): ----------------FIREBASE CRASHLYTICS----------------I/flutter (21300): PlatformException(0, Make sure your MainActivity inherits from FlutterFragmentActivity, null, null)I/flutter (21300): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648:7)I/flutter (21300): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334:18)I/flutter (21300): <asynchronous suspension>I/flutter (21300): #2 RevenueCatUI.presentPaywallIfNeeded (package:purchases_ui_flutter/purchases_ui_flutter.dart:41:20)I/flutter (21300): <asynchronous suspension>I/flutter (21300): #3 _configureSDK (package
I’m trying to implement Restore purchase for my first app using RevenueCat for Apple device. Want to understand how Restore Purchase work in RevenueCat When we call restore purchase, Does it check based on Apple account ID associated with that device / sandbox environment, or does it check based on the App User ID that we set for that session when initializing RevenueCat SDK? My paywall appears only after user has logged in if there is not any active subscription for that user, so RevenueCat SDK is always initialized with a valid App User ID. Let say a user login with email a@mail.com, make a subscription, then logout. He then sign up with a new email and log back in with email b@mail.com on the same device that uses the same Apple account ID. Would my understanding be correct that: He will see a paywall when logging back in with b@mail.com , since he is now being identified with a different App User ID which RevenueCat has not associated with any subscription yet If user clicks on Re
This has wasted so much of my time, I am starting to think it was a total mistake to go with revenue cat if they can’t even prune their repo and make it small and convenient for developers. https://github.com/revenuecat/purchases-iosI put that into Swift Package Manager and it sits for hours.
I’ve been using RC in my Flutter iOS and Android apps and it’s working beautifully. I’m now looking to add web support w/ Stripe and am hitting a road block. In Stripe, we can create a single product with multiple price points. This seems to be the suggested way to do things, according to RC documentation. However, it appears I should use the product ID to create a single product in RC. This precludes me from putting my Stripe products in different RC packages for the offering.For instance, I have ‘Lifetime’, ‘Yearly’, and ‘Monthly’ packages in the default offering. I added those as price options for the Stripe product. But RC requires the ‘prod_######’ ID to link to a product in Stripe, which doesn’t differentiate for the price options.Should I split it up into different products in Stripe? Or am I missing something?Thanks!
Hey all.I have a paywall that just displays a single IAP, which I imported to RC from Google Play as a consumable. The problem is - once that consumable was bought once it can’t be bought again. Checkout/payment google pay widget just doesn’t appear, I can press on CTA button as much times as I want - nothing really happens. My guess is that it can be caused by not consuming consumable but I would think that expected behaviour would be a widget appearing to say ‘You already have this item’, plus from what I see on this forum, it seems that RC automatically consumes any non-subscription IAP from Google Play, so I’m really confused here.Please, let me know if you can help in any way
Hi community !I am new at developping applications and I am currently using svelte that I will convert with capacitor to be able to use the app on iOs and Android.I did not see any of svelte SDK in the documentaiton, is there a way to integrate RevenueCat in my svelte projet ? Maybe with simple typescript ?Thank you for reading me :)
I’m trying to use the web sdk in my javascript code but I can’t even pass the initial stage. I’m loading the sdk from unpkg. Here’s my code:<script src="https://unpkg.com/@revenuecat/purchases-js@0.11.1/dist/Purchases.umd.js"></script><script>const api_key = “PUBLIC_API_KEY”const appUserId = “MY_APP_USER_ID” // Replacing with my own useridconst purchases = Purchases.configure(api_key, appUserId);</script>And just this gives me the error:Purchases.configure is not a functionWhat am I doing wrong here?
In the last 24 hours I have been having issues connecting to iOS store with revenueCat. here are the logs, from a “production” bundleERROR: 😿‼️ The operation couldn’t be completed. (RevenueCat.BackendError error 0.) error 21:32:38.863784-0600 IdentaFly WARN: 🍎⚠️ StoreKit 2 product request took longer than expected (83.86 seconds)error 21:32:39.133027-0600 IdentaFly WARN: 🍎⚠️ StoreKit 2 product request took longer than expected (84.12 seconds)error 21:32:40.346549-0600 storekitd AMSURLSession: [2e64_SK2] Session decoder failed. Result = (null); Error = Error Domain=AMSErrorDomain Code=301 "Invalid Status Code" UserInfo={NSLocalizedFailureReason=The response has an invalid status code, AMSURL=https://sandbox.itunes.apple.com/commerce/messages/app/inbox?bundleId=com.identafly.production&guid=00008110-0005046601E2801E&status=1, AMSStatusCode=410, NSLocalizedDescription=Invalid Status Code}error 21:32:40.346623-0600 storekitd AMSURLSession: [2e64_SK2] Task completed with error =
With latest MAUI SDK and .NET 8.0.403 getting the following error on build”```C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.143\tools\Xamarin.Android.Common.targets(1544,3): error XA4215: The Java type `kotlinx.parcelize.IgnoredOnParcel` is generated by more than one managed type. Please change the [Register] attribute so that the same Java type is not emitted.```Any idea how to have workaround for it?
Hi, The Cordova plugin has this deprecation message: This library is now deprecated. We suggest using our Capacitor SDK instead. (from https://www.npmjs.com/package/cordova-plugin-purchases) How would I use the Capacitor plugin in a Cordova app? I can’t find any instructions about how to do that. I did find https://github.com/ionic-team/capacitor-plugin-cordova-compat, but it says that the Capacitor plugin must have support for the Cordova compatibility layer. I can see that the RevenueCat Capacitor plugin doesn’t have this (see point 10 - the properties mentioned are missing from package.json). It seems to me that Cordova is just simply no longer supported? That’s a bummer. If it is the case, the deprecation message should be fixed to say something like: Capacitor uses should use the Capacitor SDK. Cordova support is deprecated Thanks,Graeme
IOS IAP promo codes are not working in Production app but the RC dashboard is recording each redemption as actual purchases, given that the user gets a prompt for purchasing the product each time they try to redeem the code. strangely I tried to test it out one time but I uninstalled the app and installed it through the redemption process and it worked, just for that one time and then it stopped working again.
Goal: Run campaigns on Apple Search Ads and give them a different Offering and Paywall.Idea: We should be able to use AdServices.AAAttribution.attributionToken() to get the token. I’m assuming this is what the Purchase SDK does. If we have a token then we can request a specific revenueCat offering.Success. If the API finds a matching attribution record, the payload returns attribution=true. If the API doesn’t find a matching attribution record, the payload returns attribution=false. In this case, the 200 OK response is acknowledgment of the receipt of the data request.Question:Does the SDK support this feature without me calling AAAtribution? If I’m calling AAAtribution could that possibly break anything? I’m assuming apple would return the token twice if we both call it.
How would you use targeting to show a unique paywall/offering based on a user’s subscription status? For example, if someone has subscribed at a lower tier, show them a discounted offer to upgrade to a higher tier. Or if someone was once a subscriber and has since churned, show them a discounted offer to resubscribe. I know there are custom attributes that can be passed to RC but this is data the RC already has and should be accessible somewhere (maybe?) but I don’t see it in the targeting rules.Thanks, -O^O-
The following code in your Android SDK (located in Footer.kt) crashes on some devices: uriHandler.openUriOrElse(it.toString()) { val msg = context.getString(R.string.no_browser_cannot_open_link) Toast.makeText(context, msg, Toast.LENGTH_SHORT).show() Logger.w(msg) } Here is the stacktraceFatal Exception: java.lang.IllegalArgumentExceptionCan't open https://mywebsite.com/terms_of_use.html.androidx.compose.ui.platform.AndroidUriHandler.openUri (AndroidUriHandler.android.kt:36)com.revenuecat.purchases.ui.revenuecatui.extensions.UriHandlerExtensionsKt.openUriOrElse (UriHandlerExtensions.kt:12)com.revenuecat.purchases.ui.revenuecatui.composables.FooterKt$Footer$3$2$1.invoke (Footer.kt:147)com.revenuecat.purchases.ui.revenuecatui.composables.FooterKt$Footer$3$2$1.invoke (Footer.kt:141)com.revenuecat.purchases.ui.revenuecatui.composables.FooterKt$Button$1$1$1.invoke (Footer.kt:213)com.revenuecat.purchases
Hi, I am facing an issue with the iOS version of my react native app. As the title suggests, when I perform an action in the app which causes the paywall to open (subscription paywall), it closes itself after a second or two of being visible with PAYWALL_RESULT of CANCELLED. It works fine on Android (only tried it in a test environment using open testing) and allows me to step through the process of purchasing a subscription.I created my app with expo but to test on a physical iOS device have used prebuild to create an ios folder which after running pod install has the .xcworkspace file required to run a build in xcode. They physical device I am testing on is signed in to a sandbox account that is linked to my apple developer account.I am using react-native-purchases version 8.2.3 and the same version number for react-native-purchases-ui.I cannot seem to find any other people who have documented experiencing this issue, and there are no warnings or errors thrown in xcode or the metro t
Hi!I'm trying to integrate Revenuecat service for a subscription (work on flutterflow). I've already reviewed all the tutorials several times, changed different options, but it still gives an error. I've been trying to solve the problem for a whole weekI'm running it on an Android smartphone via a cable from a PC.HELP PLEASE!. Here are my screenshots.I used the tutorials:https://docs.flutterflow.io/integrations/payments/revenuecathttps://blog.flutterflow.io/in-app-subscriptions-using-revenue-cat/
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.