Get help with your SDK implementation.
Recently active
According to Revenuecat documentation:“Subscriber attributes are only synced with RevenueCat servers on app launch, app backgrounded, and when purchases are made or restored.” However, we want to sync these attributes to RevenueCat servers without app being sent to background.As you can see from the attached pictures of code I tried, and debug logs, I could never force subscriber attributes to be synced to revenuecat servers without app being sent to background. They are also synced if there is a purchase, but after purchase event. However, we need to use them for before purchase event. Because they are missing with the initial purchase event webhook we are receiving from revenuecat.Any help would be greatly appreciated, thanks
Whenever a user logs out or updates an app their subscription seems to be lost. We are using React Native SDK.
Hi, We are using Expo EAS to build our app and looking forward to integrate RevenueCat SDK to our project. In RevenueCat React Native SDK Docs, it is pointed out that we need to add payment/billing permissions for Android and IOS (Link). However, with Expo EAS in Managed, it is not possible to modify xcode and gradle projects. I have seen that some people used EAS successfully with RevenueCat, so can somebody please share how they did the “Android Billing Permission” and “IOS In-App Purchase Capability” configurations? Thanks a lot.
Hi,My app was rejected because the paywall didn’t load:- Device type: iPhone 13 mini and iPad Air (5th generation)- OS version: iOS 17.6.1 I’ve seen this image when the paywall is slow to load. I’ve never seen it not load. It could be because my initial data is slow to load, but it’s never not loaded before.thanks
I am working on preparing an Android app to properly support the `Transfer to new App User ID` behavior. Up until now, the project on RevenueCat was blocking transfers. The app offers access to content based on a subscription, and the users require an account to purchase any subscription. While reading the documentation, I noticed this section that mentions the following auto-transfer behavior:So I made the following changes - as instructed by the docs here - , to make sure the existing subscription tied to the Google Play account doesn’t transfer to an anonymous user id:Only call `configure` or `login` on the SDK when the user is logged in the app (has a user id) Never call `logout` on the SDKHowever, the problem that I noticed is that when I log in to another in-app account, the auto transfer behavior that is mentioned on the doc snippet shown at the beginning is not happening. Is that section of the documentation outdated or am I missing something?Here is an example scenario that I
How do I know the customer id (originalAppUserId) when a notification is sent to my server?When a user purchases a consumible item I can see the userId in the dashboard, but can’t see it in the callback to my server URL. I only get this information:['appAppleId', 'bundleId', 'bundleVersion', 'environment', 'signedTransactionInfo'] In the signedTransactionInfo I get this keys:[transactionId, originalTransactionId, bundleId, productId, purchaseDate, originalPurchaseDate, quantity, type, inAppOwnershipType, signedDate, environment, transactionReason, storefront, storefrontId, price, currency]None of them are related to the user, so how can I know what user made the purchases being notified to my server?Hopefully somebody can help me out with this.Thanks in advance :)
Hello. From what I can see in the Revenuecat dashboard and my mobile app the purchases of my consumible product (tokens for my app) are being done correctly but the “Apple Server Notification Forwarding URL” is not being triggered.I followed the instructions here:https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notificationsSo I entered the “Apple Server Notification URL” into the Apple appstore:And entered my server URL in the “Apple Server Notification Forwarding URL”:But when I make a purchase, my server’s URL is not being called. I’m not sure why. For security reasons I want to be able to add the tokens in the server side, so that’s what I’m trying to do, which requires getting these notifications.Hopefully somebody can see what I’m doing wrong.Thanks
The 3 months ( $rc_three_month) package is not displaying correctly on Android when added as a package with the annual and monthly packages.These are the settings: This is how it displays on iOS: And this is how it displays on Android: You can see that on Android it's displaying 1 month for the 3 months plan (middle) and also throwing off the percentage saved calculations.Tested it with both Template 4 - Persian Content and Template 5 - Bengal Content and had the same issues. I am using purchases_flutter: ^8.1.1 and purchases_ui_flutter: ^8.1.1I am testing on a real device.Flutter (Channel stable, 3.24.2, on macOS 13.6.4 22G513 darwin-x64, locale en-GB) What could be causing this? Is play console quarterly subscription not compatible with revenuecats 3 months package?
I want to switch to Android Billing Library 6. Currently I am using purchases_flutter: ^4.11.0. Everything is working fine as i want. But when i try to update it to purchases_flutter: ^6.0.0 then app got crashes at start. I don’t see any error or info in console. Help me
I am using purchases_flutter: ^8.1.1 and purchases_ui_flutter: ^8.1.1 with the Template 4 - Persian Content for purchases_ui_flutter.I am testing on a real device.Flutter (Channel stable, 3.24.2, on macOS 13.6.4 22G513 darwin-x64, locale en-GB)The Template 4 - Persian Content paywall used to pop up fine on my device and working well on my android device with the offers showing fine. However, for the first test purchase I clicked the restore button in the paywall to test it out (out of curiousity) without first subscribing and it showed a message in the debug console suggesting that the restore was somehow successful. After that, whenever i call: await RevenueCatUI.presentPaywall(); it shows the following error and: E/RevenueCatUI(23306): Paywall transitioned to error state: myAppPurchaseLogic is null, but is required when purchases.purchasesAreCompletedBy is .MY_APP. App purchases will not be successful.W/RevenueCatUI(23306): Could not process value for variable 'sub_offer_duration
Hello,I am not able to build with the @revenuecat/purchases-capacitor module. Without this module, the build works. If anyone has any suggestions to help me, I would be very grateful, as I have been trying to resolve this for several days now...I have tried:deleting the node_modules folder, then deleting package-lock.json, then npm install, npx cap sync ios deleting the derived-data folder in XCode and using “clean build folder” (many times) pod deintegrate, pod update, pod install from the /iOS/App folder pod repo update from the /iOS/App folder reverting to version 8.0.0 of @revenuecat/purchases-capacitor checking that there is no mention of swift_version in my podfile adding a single, empty Swift file to the project. going to Build Settings, looking for Library Search Paths, and adding $(SDKROOT)/usr/lib/swift as the first item on the list.I haven't tried deleting the entire iOS folder, and I would like to avoid going that far... Notes:Swift Language Version is set to 5 In-App Purch
I use "react-native-purchases": "^7.26.2" for appstore in-app-purchase. when notication come to banckend, I record every transation log, my all transation on my backend db are in Sandbox environment. like this: {"event":{"event_timestamp_ms":1725398372013,"product_id":"ios_scitudy_gold_annually","period_type":"NORMAL","purchased_at_ms":1725398365000,"expiration_at_ms":1725401965000,"environment":"SANDBOX","entitlement_id":null,"entitlement_ids":["paid-translation","AI-calling"],"presented_offering_id":"ios_scitudy_gold_annually","transaction_id":"2000000704057882","original_transaction_id":"2000000703575553","is_family_share":false,"country_code":"VN","app_user_id":"$RCAnonymousID:8a36f2d9967e4105866b57d7cbd38759","aliases":["$RCAnonymousID:8a36f2d9967e4105866b57d7cbd38759"],"original_app_user_id":"$RCAnonymousID:8a36f2d9967e4105866b57d7cbd38759","currency":"VND","is_trial_conversion":false,"price":32.121,"price_in_purchased_currency":799000,"subscriber_attributes":{"$attConsentStatus"
Added the revenuecat package to unity. No ‘purchases’ objects in scenes yet. Building for iOS and then building from XCode yields this error
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,I’m currently working on a Flutter app, available on Android, iOS, macOS, Windows and soon Linux.Unfortunately, RevenueCat is not yet available for Windows and Linux, which is a shame because RevenueCat is really helpful when it comes to implementing purchases in a Flutter app.Is there any ETA for the support of Windows and Linux for the RevenueCat Flutter SDK?Thanks.
Hey RC folks,I am loving the new Paywalls beta. So simple to use, and it looks good to boot!My only feedback is that I would like to see an “X” button in there somewhere so users are 100% sure to know how to exit the paywall. Right now you have to swipe down, which is not obvious to everyone.
I have an app with IAP in SwiftUI. When I showing purchase info to the user, I use ```swiftText(package.storeProduct.localizedTitle)Text(package.storeProduct.localizedDescription)Text(package.storeProduct.localizedPriceString)``` I noticed that “localizedPriceString” was changed base on the system region settings. However, “localizedTitle” and “localizedDescription” were fixed. I have localized for en-US, zh-Hans, and zh-Hant in my IAP settings. But I can only get Simplified Chinese localized strings in RevenueCat, it never showed the other two localized strings.
I’m using in-built PaywallView() to present in SwiftUI application, i just want to change the title of this view based on different clicks. Is there any way to directly just update title of the Paywall.I tried to customize same instanse with below line but title is get only property.offering.paywall?.localizedConfiguration?.titleAnd Figure out that, if we needs changes in title will have to create completely new instance, but it’s not that ideal to just change title name.is there any simple ways that i might missed looking into.
Hi team. Found one problem. When I’ve tried to relogin to the same account - always receive the problem with `getProducts` method: ```BillingWrapper is not attached to a listener```Precondition:Setup global customerListener ``` Purchases.sharedInstance.updatedCustomerInfoListener = UpdatedCustomerInfoListener { customerInfo → if(customerInfo.originalAppUserId == myCurrentUserId) { fetchProducts(customerInfo) } } ```Found stable steps to reproduce:Login to account A (`Purchases.sharedInstance.awaitLogIn(firebaseUser.uid)`) Logout from account A Login to account B Logout from account B Login to account A, await `customerInfo`, call getProducts Result: ``` PurchasesError(code=UnknownError, underlyingErrorMessage=BillingWrapper is not attached to a listener, message='Unknown error.') ```
Normally we have single android and ios app in the store with unique bundle Id or google package id. But we can create multiple flavors by suffixing desired name to the main package id. However creating apps in project in RevenueCat requires App Bundle Id or Google Play package depending upon the platform. So is there any way one can use same subscriptions defined in the store for multiple flavors ?
Hello everyone,It’s a bit unclear if it’s possible to have a single Android app with 2 package ids (development and production), with 2 configured apps in the RevenueCat backoffice, and a single app in Google Play Console.We are getting an error every time we try to get the products with our .dev suffixed app"There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store."Is the only way around this to create a new app in Google Play Console with this .dev bundle?It baffles us, because this works perfectly well with Google Billing Client, without the need of any additional app on the Google Play Console.Thank you for your help!
I’m currently launching Paywall from inside a Fragment like this: class PaywallFragment: Fragment(), PaywallResultHandler, SlidePolicy { private lateinit var paywallActivityLauncher: PaywallActivityLauncher override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) paywallActivityLauncher = PaywallActivityLauncher(this, this) } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { launchPaywall() return super.onCreateView(inflater, container, savedInstanceState) } override fun onResume() { super.onResume() } private fun launchPaywall() { Purchases.sharedInstance.getOfferings(object : ReceiveOfferingsCallback { override fun onError(error: PurchasesError) { Timber.e(error.message) } override fun onReceived(offerings: Offerings) { val currentOffering = offerings.current currentOffering?.let { offering -> paywallActivi
I am only using RevenueCat Paywall (Android) to allow a user to subscribe. Let’s say a user subscribes to ‘Monthly’ and then two months down the line wants to shift to ‘Annual’. There’s no way the current Paywall or a version of it allows this shift. Personally, I feel it should be pretty easy for the RevenueCat team to use the current setup as you simply have to show the ‘Current’ subscription at the top, and allow to shift to Annual or whatever. No need to build a completely different paywall. The issue is, in Android there is absolutely no way to make this shift as the subscriptions management link which takes to Google Play Subscriptions also doesn’t show any option to shift the period / tenure. Please correct me if i am wrong anywhere.
When I get a test customer’s CustomerInfo while offline it looks exactly the same as if the user simply had no entitlements. How can we tell the difference - how can we know if a user has NOT made a purchase or if they are simply offline? If there anything in the CustomerInfo that can tell us? I feel like we can’t know for sure if a purchase has NOT been made.
My Flutter app’s Firebase Crashlytics keeps catching a platform exception from RevenueCat on Android. It’s being caught for the majority of my userbase.SDK versions:purchases_flutter: 8.1.0purchases_ui_flutter: 8.1.0Exception details (look for “revenuecat-events-thread”):Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: WebSocketChannelException: Instance of 'WebSocketException' at FirebaseCrashlytics.recordError(firebase_crashlytics.dart:119) at main.<fn>(main.dart:101)pool-10-thread-9: at sun.misc.Unsafe.park(Unsafe.java) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolE
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.