Get help with your SDK implementation.
Recently active
When a user logs in, it pulls their app user ID then performs the login() function on that ID.I have a real active subscription with my live app on the app store with my App User ID.When I run my app in TestFlight and login with the same App User Id, my entitlement is granted and it loads my CustomerInfo from my Live account. I thought this was an isolated environment?
“This method will send all the purchases to the RevenueCat backend. Call this when using your own implementation for subscriptions anytime a sync is needed, like after a successful purchase.”Source: https://sdk.revenuecat.com/android/5.0.0/purchases/com.revenuecat.purchases/-purchases/sync-purchases.htmlIf I understand correctly syncPurchases:1. upload the local device’s receipt to RevenueCat2. Transaction might under another app user id, so if needed transfer going to happen.3. The user access all entitlement based on the device’s receiptIs it correct? If yes, I don’t understand why need to call “like after a successful purchase.”.I assume purchaseProduct make a full sync with RevenueCat backend after the purchase, because the app should send the current receipt to the RC server, so why needed syncPurchases?
Hello, I’m having the following error on iOS platform in my Unity game. PurchasesHybridCommon/CommonFunctionality.swift:21: Fatal error: Purchases has not been configured. Please configure the SDK before calling this method.Not all my users face this error and I cannot reproduce it on my devices. I just can see them on Crashlytics.This is how I configure Purchases:
We are occasionally seeing cases where a user is able to start a subscription but their email is not associated with the user in the RC dashboard. Our code pretty straightforwardly should not allow this. The below snippet is the only place where we call `Purchases.configure()` and we immediately set the email attribute.fun initializeRevenueCat(user: User) { if (user.email.isEmpty()) { return } val config = PurchasesConfiguration.Builder(...).build() Purchases.configure(config).also { it.setEmail(user.email) }}Is this a bug in the RC Android SDK or are we missing something in usage?
Hello!Our app was rejected due to the same issue discussed here: It appears that the solution given in that thread was basically to not use the sandbox - but the App Store reviewer uses the sandbox to test and validate our app?We were able to get things working by restoring purchases prior to trying to view the introductory offer. However, as you can imagine, it is difficult to communicate this issue to the App Store reviewer.I have some follow-up questions on this:Is this an App Store Sandbox issue or is there an issue with the RevenueCat SDK? Has a bug report been filed with Apple that we can reference when responding to the reviewer? Is there some sort of additional functionality we should implement in our app to make sure we don’t experience this issue in the sandbox?
Flutter, iOSI’m able to subscribe through paywall, able to fetch offerings and products. But when deployed to testflight it doesn’t work. I get error that error with configuration and can’t fetch products. The subscription in applestore connect hasn’t been approved and is in the state “Waiting for Review”, if I submit a build it gets reviewed and rejected stating that they got an error when opening the paywall, the error is the same as above. Can anyone help me out?
Hi,Im using purchases_flutter: ^6.30.1 in my flutter app to handle downgrade and upgrade for subscriptions.im getting issue in android while downgrading await Purchases.purchasePackage call does not resolve when GoogleProrationMode.deferred is used.Expected behavior: The await Purchases.purchasePackage call should resolve, allowing subsequent code to execute Actual behavior: The await Purchases.purchasePackage call does not resolve any help regard this ?
Android is requiring all Appstore submissions target API Level 34 from 8/30 onwards. This involves moving from @capacitor/core 5.x to 6.x. The https://github.com/RevenueCat/purchases-capacitor SDK is currently set to require @capacitor/core 5.x. Will there be an update to target 6.x?
In my app, I want to display to an existing subscriber the date and the amount they will be charged next. From customerInfo.entitlements I can get the next charge date through expirationDate, but there's no "amount" in the entitlements object as far as I can see.I know I can get the subscription price from the offering/package, but here's my use-case:I set a subscription price Some users subscribe against that price I change subscription price in AppStoreConnect, but only for new subscribers (existing subscribers will stay at the price they always paid). So now the offering/package will contain the new price, which is not the price the existing subscriber will be charged.Any help is appreciated.Thanks & regards,Guido
Hi All,I’m trying to use Swift UI previews in order to develop my subscription screen, and I want to pass through the `CustomerInfo` object I have stored in my view model to do that (similar to the MagicWeather test app)But unfortunately, the CustomerInfo() initializer is not accessible outside the module - if I try to create example info, I get the message “'CustomerInfo' initializer is inaccessible due to 'internal' protection level”This similarly prevents me using a convenience init (since I can’t call the original init) which is what happens in the internal Revenue Cat tests (as far as I can tel)Has anyone got this working, or does everyone just develop on-device?Thanks!Nik
If I deactivate an in-app product (not a subscription) in the Google Play Console, will users who purchased that product before it was deactivated still be granted the associated entitlement by RevenueCat? Context:I created an expensive lifetime in-app product as part of a pricing A/B test which failed. The price of that product is displayed as the max purchase price on my Google Play listing. £1.39 – £100.00 if billed through Play I’d like to deactivate the £100 product so my app doesn’t look too expensive to potential users.
Hi everyone,I was looking to create a custom App User Id but somehow everything stopped working all of a sudden.I was using the account email plus a random uuid since email is said to be guessable.This was working fine until all of sudden I keep getting UNKNOWN_BACKEND_ERRORComplete error was this: {"error": {"code": 16, "message": "There was an unknown backend error. The provided app user id has been blocked. Please visit https://docs.revenuecat.com/docs/user-ids for more information. (7626)", "readableErrorCode": "UNKNOWN_BACKEND_ERROR", "readable_error_code": "UNKNOWN_BACKEND_ERROR", "underlyingErrorMessage": "The provided app user id has been blocked. Please visit https://docs.revenuecat.com/docs/user-ids for more information. (7626)"}, "target": 77}So, I am lost. It was working fine now it isn’t.Email alone is not advised. I can understand that.When I make it anonymous, I can not track who is paying subscribing.I would not know my customer accounts and if anything went wrong, I co
Good afternoon,Guys, please help me, I need an example code in Kotlin.I have the simplest option: no authorization, no subscriptions, no Compose.Only three products (Consumables), my own layout with three buttons (for each product).How can I get the price of a product and setOnClickListener so that the process of purchasing this product begins? val tv_Crystals_100: TextView = findViewById(R.id.tv_Crystals_100) val tv_Crystals_200: TextView = findViewById(R.id.tv_Crystals_200) val tv_Crystals_500: TextView = findViewById(R.id.tv_Crystals_500) tv_Crystals_100.text = "__price_" tv_Crystals_100.setOnClickListener { ... } tv_Crystals_200.text = "__price_" tv_Crystals_200.setOnClickListener { ... } tv_Crystals_500.text = "__price_" tv_Crystals_500.setOnClickListener { ... }Thanks a lot in advanceDenis
Purchasing the subscription in an iOS simulator works just fine.Tapping my purchase button gives me the following error:Error finishing transaction 0: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={NSUnderlyingError=0x303593360 {Error Domain=AMSErrorDomain Code=301 "Invalid Status Code" UserInfo={NSLocalizedDescription=Invalid Status Code, AMSURL=http://localhost:49178/WebObjects/MZFinance.woa/wa/inAppTransactionDone?REDACTED, AMSStatusCode=404, AMSServerPayload={ error = "Transaction not found";}, NSLocalizedFailureReason=The response has an invalid status code}}, storefront-country-code=USA, client-environment-type=XcodeTest(file:///private/var/mobile/Containers/Shared/AppGroup/7FD3F64D-79A5-4487-ADED-F3BB2CF090CA/Documents/Persistence/Octane/com.bronsonmullens.JustFlipIt/)}My sandbox account does not have 2FA and no prior transactions (it’s brand new). Also tested this on another sandbox account I have an I’m getting the same result. Here’s some snippets of my implementa
We are using revenue cat in observer mode inside our Unity3d project (Unity 2021.3.29f1). Google requires to update to billing client 6. Unity already created InAppPurchasing plugin with BC 6 (4.12.0). But as I see in purchases-unity/VERSIONS.md at main · RevenueCat/purchases-unity (github.com) there is still no version that supports both billing client 6 and observer mode with Unity iAP?When new version will be released? We need it ASAP because our deadline is august 31 of this (2024) year.
In the <app_user_id>absence of anonymity, Apple Account 1 subscribes to a product, and at this time, exit Apple Account 1 and log in to Apple Account 2, at which time Apple Account 2 will inherit the product subscribed to by Apple Account 1. Resuming in-app purchases won't do anything either. I would like to ask how to solve this problem. If this is the case, an Apple account that has subscribed to the product can be used by other Apple accounts without a subscription. This is a very serious problem, please tell me how to do it, thank you!
The warning is as follows...TMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the 'aps-environment' entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the 'aps-environment' entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor's Capabilities pane, or manually add the entitlement to your entitlements file.Should I be worried? Does Revenuecat use Push Notifications for like billing issue detected?How can I stop these warnings?I am using Expo. Thanks
Hi!I'm working on my app that offers a "PRO" version with a monthly subscription, but i want to be ready to offer additional plans, like an annual version for example. To load the options, my view looks like this:And i used it like this to generate the upgrade buttons. Purchases.shared.getOfferings { (offerings, error) in if let packages = offerings?.current?.availablePackages { self.packages = packages for package in self.packages { let button = UIButton(type: .system) let price = package.localizedPriceString button.setTitle(price, for: .normal) button.addTarget(self, action: #selector(self.ctaTapped(_:)), for: .touchUpInside) button.tag = package.hash self.CTAButtons.addArrangedSubview(button) } } else { print("RevenueCat not working") }}At the moment i only have one monthly subscription setup, but later it might have more options, like annual version. My first problem here is that how can i show the / month text on the button?(or /annual in case later i add another o
I created a paywall with english and german translations. My iPhone is set to German (region Germany). Unfortunately the paywall is still shown in english. I deployed the app with flutter run --release to my physical iPhone 15 with iOS 17.5.1. On my physical Android device with Android 12 it is working fine.Dependencies: Flutter 3.22.2 - purchases_flutter: ^6.29.4 - purchases_ui_flutter: ^6.29.4
Hello 👋,After nearly two years of using RevenueCat without any Problems, we started to get rejected during Play Store Reviews due to a ‘Broken Functionality Policy’ Violation.After investigating the issue, it turned out that fetching Offerings from RevenueCat seems to fail on the devices used by the Google Play Reviewers. On those devices the following error is thrown:PlatformException(23, There is an issue with your configuration. Check the underlying error for more details., {code: 23, message: There is an issue with your configuration. Check the underlying error for more details., readableErrorCode: ConfigurationError, readable_error_code: ConfigurationError, underlyingErrorMessage: There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store. More information: https://rev.cat/why-are-offerings-empty}, null)The code for fetching the offerings from RevenueCat roughly looks like thisfinal Offerings offerin
Hello everyone,I got RevenueCat working with Expo iOS development build but when I submit to appstore or even do a local preview build, app crashes on startup.I connected my iPhone to my mac with cable and launched the console app. And when I filtered the streaming console I found this error that caused the crash RevenueCatUI/DebugErrorView.swift:68: Fatal error: Purchases has not been configured.However, I did configure the Purchases at the very root in my App.jsI tried these both… const configurePurchases = async () => { if (Platform.OS === "ios") { Purchases.configure({ apiKey: process.env.EXPO_PUBLIC_RC_IOS }); } }; configurePurchases();and… const configurePurchases = async () => { if (Platform.OS === "ios") { Purchases.configure({ apiKey: process.env.EXPO_PUBLIC_RC_IOS }); } }; useEffect(() => { async function init() { await configurePurchases(); } init(); }, []);They both work at the development build on a physical device.But t
Hi, I’m testing payments in my app. This has been working for several months as expected. Today however, when testing subscriptions in the iOS simulator I receive an error on `.purchasePackage` and `.restoreTransactions` saying this: `[Error: The receipt is missing.]` I’ve correctly included my StoreKit configuration in my build, and this was always previously working as expected. I recently upgraded to the new mac, and therefore the latest macOS. Here is what i’m passing into `.purchasePackage`:{"identifier": "$rc_monthly", "offeringIdentifier": "Full Access", "packageType": "MONTHLY", "product": {"currency_code": "USD", "description": "", "discounts": [], "identifier": "1MONTH", "introPrice": {"cycles": 1, "period": "P2W", "periodNumberOfUnits": 2, "periodUnit": "WEEK", "price": 0, "priceString": "$0.00"}, "intro_price": 0, "intro_price_cycles": 1, "intro_price_period": "P2W", "intro_price_period_number_of_units": 2, "intro_price_period_unit": "WEEK", "intro_price_string": "$0.00",
Hello RevenueCat,We are currently facing two critical issues with our implementation and would greatly appreciate your assistance.1. Sandbox Testing Error - "Error 8: The Receipt is Not Valid"During our sandbox testing phase, every single purchase attempt results in the following error: Error 8: The receipt is not valid.We have tried multiple solutions to resolve this issue, but none have been successful. We are using your Paywall CMP render with React and TypeScript. Below is the relevant code snippet from our implementation:Code:return ( <RevenueCatUI.Paywall onPurchaseStarted={onPurchaseStarted} onPurchaseCompleted={onPurchaseCompleted} onPurchaseCancelled={onPurchaseCancelled} onPurchaseError={onPurchaseError} />); The error consistently occurs in the onPurchaseCompleted callback with the following message and moves to onPurchaseError:{ "error": { "code": 8, "message": "The receipt is not valid. The purchased product was missing in the receipt. This is t
I have an urgent production issues, where all users have access to PRO features since migrated to RevenueCat due to the following,I have an issue where customerInfo.entitlements.active.isEmpty is always returns a value when user is not subscribed. The customerInfo.activeSubscriptions always returns the product identifier for users who have subscribed but cancelled their subscription.I have added print("ENTITLEMENTS \(customerInfo.entitlements)") print("ACTIVE SUBS \(customerInfo.activeSubscriptions)")This returns ENTITLEMENTS <RCEntitlementInfos: self.all=[pro:],self.active=[:],self.verification=VerificationResult.notRequested>ACTIVE SUBS [“com.appname.com.promonthly", “com.appname.com.proyearly”]I have also tried removing cached info with Purchases.shared.invalidateCustomerInfoCache() Also when opening Debug > StoreKit, not transactions are show. func verifyIAPReceipt() { Purchases.shared.invalida
The doc says:To address this with RevenueCat Paywalls, consider using sub_offer_price and sub_offer_duration in either your package details or your CTA to ensure that the introductory offer is clearly disclosed. In the paywall editor:Variable "sub_offer_duration" is not allowed in this field.This seems an odd and unecessary restriction.So I’m not sure where to put this information. The “Call to action for an introductory offer” does not display in the preview so how are you supposed to do this generically? Where do you put the cancel anytime? Where do you inform people of the free trial?
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.