Discussion and help from anything related to RevenueCat.
Recently active
I have integrated into our React Native Expo app RevenueCat, following all the guides step by step.I publish the app to TestFlight today and I can see the purchase popup and product information correctly. After purchasing the product I see a message saying: “You’re all set, your purchase was successfull.”And just after that message we are doing an alert with the value of “productIdentifier” property.const {customerInfo, productIdentifier} = await Purchases.purchasePackage(expertAdvicePackage); Alert.alert(JSON.stringify(productIdentifier));The alert shows this: We already checked bundle id and app shared secret and everything matches exactly as in the AppStore. This is killing me because I can’t pass this point and need to move this into production asap. Appreciate any help or advice. Kind regards,
Has anyone seeing the Apple or RevenueCat server response time to be very slow in the last week?12/23-12/28+? A few weeks ago the response time was great, very fast. Currently it can take several minutes to authenticate a purchase between Apple and RevenueCat. This has led to several App Store rejections this week. Anyone else experiencing this? Should I just wait till the new year? Maybe Apple and RevenueCat are doing maintenance so servers are slow. If the apple tester/review person sees a long delay they reject the app….
After importing the RevenuCat package along side Admob, android resolver in unity runs and runs for like 30 mins and crashes, also happens when importing AdMob after importing RevenuCat
HeyIm using subscriptions for both ios and google play through revenuecatToday an androud user reported that he has a new phone and the app keep saying he doesnt have any subscriptions. He is still on the same gmail-account as he did the purchase / subscription withI thought the subscription was following the user and not the device? Thanks for any help :)
I successfully managed to integrate RevenueCat with the Firebase extension, and working properly the events are sent to Firebase. But it’s hard to test some event types so I would like to send events from postman through the Webhook url:{"code":1,"message":"Incoming RevenueCat webhook could not be authenticated. Please check that the shared secret is set up correctly."}I have the shared secret added to header: Authorization: Bearer shared_secret_here (Shared secret is from the google cloud which is connected our app from Firebase)And added the webhook url the same as the Firebase integration webhook.Here is the Firestore rules: The firebase functions integrations are working properly, but I cannot make the same work with webhook, what am I missing? (not even test events)
I’m trying to follow the basic Android consumable in-app purchase flow, and after setting a basic product in Google Play, RevenueCat is giving me this weird error: Identifier: <redacted>Platform: Play StoreStore Status: Incompatible product. Product is incompatible with RevenueCat Android SDK version 6 or above and equivalent cross-platform SDKsLearn more. The documentation points to https://community.revenuecat.com/tips-discussion-56/google-i-o-22-announcements-rc-product-priorities-1620/index2.html which doesn’t seem to have anything to do with consumable / non-subscription products, so isn’t helpful. So far I’ve tried searching these forums and google looking for an answer or guide, and just saw another post with a similar error for flutter. Any pointers?
The app stores are Play Store and App Store only and there is no back-end support. I am migrating from the official in_app_purchase plugin, should I call the syncPurchases() function? The Purchases SDK automatically detects new transactions and sends them to RevenueCat. However, when migrating from an older system, you need to tell Purchases to sync to ensure we are tracking your subscribers correctly.The way to do this is: if your existing subscription code knows you have a subscription, but RevenueCat does not, then restore transactions. Can’t RevenueCat directly check with Play store or App store account to know this when a CustomerInfo is fetched?Also, other than migrating, is there any other circumstances where I need to call this function? I see people calling (here and here) this function after or before performing a purchase and I am confused.Can someone help? Thanks.
The difference I know so far is that restorePurchases can be called multiple times but only through user action while syncPurchases should be called programmatically only once every app version.Is there any other differences or they are fundamentally different in what they do?
This method will fire whenever the SDK receives an updated CustomerInfo object from calls to getCustomerInfo(), purchase(package:), purchase(product:), or restorePurchases(). Is there a way to tell what causes the method passed to addCustomerInfoUpdateListener to be called? It will be nice to be able to tell the difference between a purchase and restore when it fires.
Hello! I’m developing a SwiftUI app and am using code from the Magic Weather example app to implement a paywall for my subscription. The initial version is working just like I would expect it to (displaying the correct names, prices, duration, etc). However, I started thinking about different scenarios to see if my code would handle them. One of the first things I tried is causing me concern. If I launch the app with no connectivity I see errors logged, which is not unexpected. When I restore connectivity I almost immediately see some RC activity. [Purchases] - DEBUG: ℹ️ applicationDidBecomeActive[Purchases] - DEBUG: ℹ️ CustomerInfo cache is stale, updating from network in foreground.[Purchases] - DEBUG: ℹ️ Offerings cache is stale, updating caches However, when I view my paywall (which is just PaywallView.swift from the SwiftUI Magic Weather at this point) there are no offerings displayed. I added some logging and UserViewModel.shared.offerings is still nil even after connectivity i
I want to setup discount codes for one-time in app purchases.I’ve seen loads of documentation on discounts for subscriptions not none for one-time purchases. I want to be able to give out codes that will allow people to use my product for free and discount codes that will give people a discount. What’s the best way to go about doing this for iOS and Android?
Hi,We Would like to see the differences on the graph (trials, revenue, churn, etc) for our App that’s on the AppStore for iOS/iPad and AppStore for macOS.The bundle id are the same and the in app purchases are also the same.Revenuecat already report Last Seen Platform Version but of course this is the last, it changes and is nor possible to make reports.How to know where the leads are being originated?
My project is written in objective-c and I am using the following method to fetch data: [[RCPurchases sharedPurchases] getOfferingsWithCompletion:^(RCOfferings *offerings, NSError *error) {}When the device is out of network, this method doesn’t get any data, which is logical as there is no internet connection. But the device already fetched this data earlier. How can I read this data? I can save the fetched data manually, but I found that RevenueCat has the mechanism to cache the data, but couldn’t find a way/thread to read this data in the forum. It would be a great help if there is an easy way to read the fetched data offline.
I’ve configured Free Trial offer on both Monthly and Yearly Plans in Google Play Store.The free trial (7 days) is not showing payment sheet.I get the following object - {…,freeTrialPeriod:P1W,...} in Logcat.Could it be because the Revenuecat use a Billing lib. with version 4.1.0? The version of Revenuecat that I use now is 5.6.3
Hi Team, I am runing an adnroid application with Revenuecat sdk. We received a report from a guy regarding the storage of Revenuecat authetication token. Is it possible for him to cause any critical damage using that api key?? Best Regards,SHlok K
How do I know if purchase is pending in flutter? Please give me the code where I can do something like this - if(purchase.isPending) {doSomething();} else{doSomething();}
I have an iOS app with a companion watchOS app. (The watch app does support running without the iOS app)When testing in Xcode with a storeKit Config file, I’m noticing different behaviors. On the iOS app, If I refund the transaction through the storekit > manage transactions window, the SDK immediately responds to the event and thus updates the entitlements etc. On the watchOS app, If I refund the transaction there is no response from the SDK. The only way I’ve been able to reset the entitlements is to go into the revenue cat dashboard and delete the associated customer. I’ve configured and implemented the Revenue Cat SDK in both through a single class such that the overall integration is identical. Similarly, they are both referencing the same storekit Configuration file that matches the offerings set up in the Revenue Cat dashboard. The bundle Id’s reflect MyApp and MyApp.watchkit accordingly. Is this the expected behavior? Does the SDK listen for events differently on watchOS?
transferring app to another google play store and app store account with revenue cat without any income loss.
The docs say: The SDK will update the cache if it's older than 5 minutes, but only if you call getCustomerInfo() However in my testing, whenever I run the below function, the requestTimeMillis remains stale, even after 5 minutes, and I’ve called `getCustomerInfo()`.I was under the impression this timestamp would change every 5 mins regardless of purchase, to reflect the getCustomerInfo request. Is that not the case?import moment from "moment";import Purchases from "react-native-purchases";async function logRequestDate() { const customerInfo = await Purchases.getCustomerInfo(); const { requestDateMillis } = customerInfo; const lastRequestDateString = moment(requestTimeMillis).format("hh:mm:ssa - DD/MM/YY"); console.log(lastRequestDateString); // eg. "08:30:05pm - 22/12/22"}logRequestDate();
Hey All, instead of having RevenueCat create an anonymous user ID for every person that starts a subscription, I want to use the CloudKit recordName for the RevCat user ID so that I can match up the user. Currently, I have the RevCat implementation happening right when the app launches in the init {}. How should I think about fetching the CloudKit recordName before RevCat Purchases.configure(withAPIKey: “”, appUserID: “”) is called? Thanks for any help.
Just trying to understand how this is supposed to work. No matter how many times I may call getOfferings it returns asynchronously. Even if the debug messages say that it is vending from the cache, return is async. The doc says the following with regard to the completion block: “Called immediately if offerings are cached.” Is this just wrong or is the behavior I am seeing unexpected?
So we’ve been dealing with this issue being sent to us by the reviewer. We continue to find that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 15.7 on Wi-Fi. Specifically, the Subscribe button was unresponsive when tapped and we were unable to verify the purchasing process for your in app purchase items. Next Steps When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead. This is our first time releasing to app store. Should we ask the reviewer his/her appleID and add it as one of Sandbox testers?We appreciate all of your feedbacks.
We’re on the seemingly endless treadmill of missing receipts and offerings for our first iOS app store review and had a seemingly simple question that we struggled to find a good answer to.Should we remove our synced StoreKit Configuration File from our scheme before archiving to submit to the app store? Or is that file only used for xcode testing, so leaving it in the build is fine?Thanks.-nate
Background: I am sharing an entitlement across the App Store, Play Store and Stripe. Currently there is a single entitlement but I want to be able to add additional products and entitlements in the future.For my current issue:Entitlement identifier: “standard” is associated with 3 products (one on each platform)Offering identifier: “default” has one package “Monthly” which points to the same 3 productsProducts (3 of them) have unique identifiers (for example): ios_id, play_id and stripe_idSituation: A user buys a subscription in Stripe and I want to know if they have the same entitlement when I look at customerInfo in the App store or the Play store.Platform: React NativeSDK: "react-native-purchases": "^5.4.0"Issue: When I call Purchases.getOfferings(). I receive only the offerings for the platform I am on. Example on the App store the availablePackages array only contains the product I have associated with the App store: ios_id (which I would expect). With the package identifier as
Hi,Some of the users refunded our app’s subscription. Now, I'm not sure the RevenueCat dashboard is showing the correct revenue info, because revenue is not increasing despite new sales.We haven't had much refund-related Slack notifications in the past few hours, but revenue continues to drop: For example, we got two refund notifications, but revenue decreased more than that like 10 or more. I don’t know why.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.