Discussion and help from anything related to RevenueCat.
Recently active
[Reposting in SDK’s as I accidentally posted in General]I’m trying to push my app out for Beta testing but when I upload a build to TestFlight and run it the call to Purchases.getPurchaserInfo() hangs and never returns. It works on the same device when just running outside of TestFlight. I can run through the whole IAP flow when running on this device. But as soon as I push to TestFlight and run it through there it just hangs waiting to get purchaser info. I think these are the logs needed:default 12:08:37.873277-0500 Runner [Purchases] - DEBUG: There are no requests currently running, starting request GET /subscribers/$RCAnonymousID0X0P+0f621ae3fbd374db9b96d0b6d31ea5d20default 12:08:37.873327-0500 Runner [Purchases] - DEBUG: API request started: GET /v1/subscribers/$RCAnonymousID:f621ae3fbd374db9b96d0b6d31ea5d20default 12:08:37.883570-0500 Runner [Purchases] - DEBUG: There's a request currently running and 0 requests left in the queue, queueing GET /subs
Hi,I would like to ask if the UpdatedPurchaserInfoListener works across platforms. eg. user will be logged in on iOS and the Android app and will buy a product on one of them. Does this listener also trigger the other platform's UpdatedPurchaserInfoListener? (when the other app is active)
MyApp requires signIn operation for purchase.And also, `Purchases.logIn("my_app_user_id");` after signIn. But, `created a new alias` executed about 1 month after purchased.This occurs a few users. Why??In the period, it has been used `$RC:AnonymouseID:xxx` instead of `my_app_user_id`.It is not expected. it should create alias as `my_app_user_id` as soon as possible(ex. next to First seen using the app). Any help, please
I have an app made in Flutter that is running on Android and using subscriptions. The most basic things are working. But this is not:User have an active subscription and then cancels the subscription.I wait for more than ten minutes. I restart the app.Still PurchaserInfo says willRenew is true and unsubscribeDetectedAt is null.What can be done to get the updated information?
Hi,I’m looking for an advice or a guidance how to fill the Data safety form in Google Play in regard to RevenueCat integration. Our app is not collecting any private user data, no account is necessary, no ads, no analytics implemented, but offers subscription to Premium version with unlimited functionality. We are processing Premium subscriptions using RevenueCat SDK. We are getting anonymous information about users who started trial/purchased/canceled subscription. All we know is that “someone” (we get anonymous user ID, e.g. $RCAnonymousID:23kkjjj344kjkjkjkjkj3jkjjjkjkj) in Canada using Android device opened the app, started a trial, purchased the Premium subscription, or canceled trial, opt out from renewal of Premium subscription. I assume the “data type” we collect is only “Financial info – Purchase history”. I assume this data is “collected” and users can “choose whether this data is collected”, since users can use the app without purchasing the Premium subscription. I assume the
I am in the process of implementing the RevenueCat SDK and everything seems to be working well, except I am seeing 30+ ‘New Customers’ displayed on my dashboard. Only I am using any version of the app with the SDK implemented, and I have only been testing with two accounts. If I visit the ‘customers’ area, I only see the two expected Sandbox accounts and nothing else.Why is the New Customers count on the dashboard out of sync with the Customers reports, and why would it be so unexpectedly high?Update: I am currently testing logging in and out of different accounts (my accounts, not Apple IDs) and restoring transactions (resulting in transfer events). I see anonymous RC accounts being created in the webhook event. Presumably that is the reason for the count increasing? Am I doing something wrong to generate so many anonymous accounts?
When showing the IAP action sheet there is some delay upon a purchase attempt and a response from apple confirming success to trigger the SDK callback, this leaves the user a bit confused whats going on... This all goes on inside the RC `purchasePackage` method where it doesnt let me know the time period between user confirming purchase and the callback received from the SDK that its all been doneIs there a way to handle for this?
Hi, I have some confusion betweenif let info = purchaserInfo { if info.allPurchasedProductIdentifiers.contains("xxx") {and if purchaserInfo?.entitlements["pro"]?.isActive == true {Basically, i am trying to check if the user has subscription or not. I am checking with .onAppear in the default main view. I am new and would like to learn how to check if the user subscription period hasnt finished (doesnt matter if the user cancelled the subscription or not, of course)
Hi there,I’m trying to fetch my consumable offers on my iOS simulator but I get empty products. I have performed the following steps.Set app credential from app store connect to revenue cat Enable IAP on XCode Follow https://www.revenuecat.com/docs/apple-app-store and created storekit file and uploaded to revenuecat Create product on revenue cat On iOS simulator iPhone 13, when I call fetch offers I get the error ```flutter: PlatformException(23, 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.More information: https://rev.cat/why-are-offerings-empty, {code: 23, message: 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.More information: ht
Hi all! I followed this video: https://www.youtube.com/watch?v=0H2SdKf4ot0 which was immensely helpful in helping me get RC setup in my SwiftUI app. I was able to get purchasing working for a single subscription using a button: VStack { Button(action: { Purchases.shared.offerings { offerings, error in if let packages = offerings?.current?.availablePackages { Purchases.shared.purchasePackage(packages.first!, { transaction, purchaserInfo, error, userCancelled in print("TRANSACTION: \(transaction)") print("PURCHASER INFO: \(purchaserInfo)") print("USER CANCELED: \(userCancelled)") if purchaserInfo?.entitlements["Pro"]?.isActive == true { } }) }
Hello,The following link https://www.revenuecat.com/support returns 404 and it is used in “report the problem” link here: https://docs.revenuecat.com/docs/errors#-unexpected_backend_response_error
Hello. This is the fourth app I’m setting up using RevenueCat (so thanks!), only this time not subscription-based.It is an iOS app using v.3.14.1 of the SDK, still performing tests in the sandbox environment. Basically I am using consumables with entitlements and those entitlements disappear after the app is uninstalled, even when the dashboard still reflects that the user should have the entitlement.No matter what I try there are zero entitlements in the purchaserInfo after uninstalling the app:When I use the delegate When I restore transactions When I refresh the purchaserInfoIf I check the entitlements before the user deletes the app, even on subsequent app launches, the purchaser info reflects everything correctly. Repurchasing any consumable fixes this, at least until the app is uninstalled again.Docs seem to indicate that we can use the consumables with entitlements, so am I missing something obvious? I am happy to share logs.Thanks.
We have a production version of the app on testflight, and i assume users can make free IAP’s with sandbox there and gain premium user status.When we promote this build to appstore, as its backed by the same environment, users can use their same account on production.I wanted to know, will revenue cat update our backend to make their account ‘non premium’ again after they open the appstore build of the app? despite using their same user account and backend server that they had sandbox premium on in testflight?I didnt want a situation where users are non premium in revenue cat, but still marked as premium on our server causing issues.Thanks
How do I know when the free trial period is over and the subscription has started? Can you help me if I need to make changes to the code after the trial period?
I’m working on an IOS application with the following in-app purchase options:$0.99 - Receive 1 credit per month (Auto-Renewing) $1.99 - Receive 3 credits per month (Auto-Renewing) $2.99 - Receive 5 credits per month (Auto-Renewing) $3.99 - Receive 10 credits per month (Auto-Renewing) $4.99 - Receive 1 credit (Consumable)Users may only subscribe to one auto-renewing option at a time, but they can purchase the single credit consumable without restriction.My question is how should I organize these products as offerings/entitlements/packages/etc.? My current method is:All four auto-renewing products above are associated with a single entitlement Each auto-renewing product has a 1:1 “parent offering” The consumable product has no associated entitlement/offeringThe tutorials I followed all suggest using offering and entitlements, and so I did. However I feel it’s all clunkier than it has to be. For example, with the Purchases SDK, fetching the offerings and then extracting the packages (prod
Hello! I’m really destroyed and don’t understand how to solve my problems.I have one apple account and can create multiple user-accounts in my app. First case:User A login (with logIn()) Buy purchase User A logout (with logOut()) User B login (with logIn() another appUserId)Now User B have subscription from User A. But i want the User B to not have a subscription in this case. What can i do?And more one, in this case after login method getPurchaserInfo() return not active subscription (I’ve been awaiting more than 5 minutes (time for reset cache but got not active). After this i show payment card and by tap (call method purchaseProduct()) user B see system alert with “have already subscription”. And after this method getPurchaserInfo() for User B return active status of subscription. What can i do in this case?Thanks for support!
Hi,I am following the official document https://docs.revenuecat.com/docs/creating-play-service-credentials to set up Service Credentials with Play Store.At step 2b we need to access ‘Google Cloud Platform’ which when I do I get the following error message…“You are missing the following required permissions: Project resourcemanager.projects.get”One workaround I have attempted was to select the app name I want the Credentials for in the top left ‘Select a project’ dropdown and then select ‘Service Accounts’ from the left hand menu. I am then able to..Create the credentials (2c) Assign Pub/Sub Admin Role & Monitoring Viewer (2d) Create public key (2e)The issue I have is that when I now go back into Play Console as instructed my Service Credentials do not appear and therefore I also do not have a ‘Grant Access’ button. It simply states‘There are no service accounts associated in this project’I’ve no idea what to do from this point as I cannot continue with the configuration without the
I’m using the Flutter SDK and the introductoryPrice field returns null even if the free trial is set on the Google Developer Console. This also happens in production. I looked up my crash reports and found out that there aren’t many users affected by this bug. I haven’t tested on several devices, but I guess it only happens on several Android devices or the OS versions. At least I confirmed that it doesn’t work on my device. Anyone else has experienced the same issue?
I’m trying to push my app out for Beta testing but when I upload a build to TestFlight and run it the call to Purchases.getPurchaserInfo() hangs and never returns. It works on the same device when just running outside of TestFlight. I can run through the whole IAP flow when running on this device. But as soon as I push to TestFlight and run it through there it just hangs waiting to get purchaser info. I think these are the logs needed:default 12:08:37.873277-0500 Runner [Purchases] - DEBUG: There are no requests currently running, starting request GET /subscribers/$RCAnonymousID0X0P+0f621ae3fbd374db9b96d0b6d31ea5d20default 12:08:37.873327-0500 Runner [Purchases] - DEBUG: API request started: GET /v1/subscribers/$RCAnonymousID:f621ae3fbd374db9b96d0b6d31ea5d20default 12:08:37.883570-0500 Runner [Purchases] - DEBUG: There's a request currently running and 0 requests left in the queue, queueing GET /subscribers/$RCAnonymousID0X0P+0f621ae3fbd374db9b96d0b6d31ea
Is there a way to know the monthly start date of the user's subscription? I can use the latest purchase date for a one-month subscription product, but there is no way to know a three-month or one-year subscription product. Because the latest purchase date will continue to change.
I have a subscription tier in my iOS app. I understand how to access `purchaserInfo` to check if the current user has the entitlement associated with this tier. However, I would like to display a badge on all user icons for other subscribers in the app - a little like the ‘verified’ badges on a Twitter account image.Clearly I need to store something server-side on my own user objects to track this, but I’m not sure what approach to take. Perhaps each user’s status should be saved to the server by my app as their entitlements change, and other instances use this saved user flag? But entitlements can change when the app isn’t being used, such as cancelled or expired subscriptions. My backend will have no knowledge of that change, so that use will continue to be displayed as a subscriber until and unless the launch the app again.Any suggestions on a good approach for this?
ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "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.I’ve created my config file multiple times still facing this issue can anyone help me with it ???
I am using RevenueCat to manage my 3 streams of subscriptions: Android, iOS, and Web. For Web purchases, we are using the promotional entitlements API to register the relevant subscription purchases. However, we are not sure how to manage grace periods for these.Is there a recommended way of doing it using RevenueCat? Or should the logic to manage a grace period be done on our side?A potential solution we have discussed is to update a user’s subscription information when a billing issue is detected on a payment method on the Web platform. This would allow us to keep a consistent format in managing mobile and web purchases. However, there doesn't currently seem to be a way to do that.
When a user tries to restore a purchase, it fails with a message in console:[Purchases] - WARN: ⚠️ /<project_path>/Pods/PurchasesCoreSwift/PurchasesCoreSwift/LocalReceiptParsing/ReceiptParser.swift-receiptHasTransactions(receiptData:): Could not parse receipt, conservatively returning trueI tried to debug this issue and found that it fails at InAppPurchaseBuilder.swift:87 because isInIntroOfferPeriod is nil. I didn’t do any changes related to purchases recently. Is it something changed on a server side? Purchases (3.14.0)PurchasesCoreSwift (= 3.14.0)
Hi,I’m debugging an issue with my billing integration and want to look into customer data in RevenueCat. In my setup I have individual builds (and application ids) for development, staging and production and am currently testing a sandbox purchase for a non-consumable product on iOS.Now I’m trying to find a specific user, but the Customer List doesn’t show the user. I know that the user exists, since I can get it from the api and could find it by manually editing the https://app.revenuecat.com/customers/… url.The “Find Customer” search box also does not give me the user.How can I view all customers in the Customer List?Thanks,Thomas
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.