Discussion and help from anything related to RevenueCat.
Recently active
I’m using expo with EAS. Both in production and expo it throws errors saying the Purchase Class is null and thus no functions exist on it. My IDE says it the class is imported and i can call the functions. Typescript says everything is fine. Can someone help me?I installed the react-native-purchases package multiple times and cleared Caches as well.
I am building an iOS app, I use RevenueCat for my in-app-purchase feature. In RevenueCat dashboard, it shows my monthly active users and my active subscriber, I want to hit the same api and display these informations in my iOS app, dose RevenueCat provide such an API for us to use or we are not allowed to use these information outside of the dashborad?
Hey RC community could someone please tell me the very Best way to check for an active subscription ?My Current implementation is customerInfo.entitlements.active.isNotEmptyat One Point my implementation was listening to the expiration datecustomerInfo.latestExpirationDate.then added 3 Days to it , which would give the user at least 3 days to have premium service, should in case there’s subscription verification delay from RC database, I implemented this because I have noticed that sometimes when I Hot Restart my App, 1 out of 50 times it loses Subscription and then it regain after another hot restart , this mostly happened when its time for the Sandbox to renew the subscription, by adding a Day or more to the current subscription latestExpirationDate. it give a lot of room for the server to correct itself and not make customer lose premium service.I don't know if this behavior only exist in debug mode. could someone please tell me, if I should be be worried about this in production
I previously added and enabled the Google Play Android Developer API to a Google project I created. I also created a service account and correctly set the permissions for app and financial access. However, I'm experiencing errors related to the Purchase API, and I'm unable to proceed with my next steps.Has anybody else had issue like this and managed to resolve them?Thanks :)
I experience a problem when testing purchases on a physical iPhone. i.e. showing the user subscription status for subscriptions with promo offer. While testing on the simulator the expiration date for entitlement with promo period was as expected - 7 days plus from the date of purchase (1 week free trial). But when I switched to testing on a physical device I got some issues with my code not working correctly. I’ve managed to refactor methods for showing offering details on my Paywall and the purchase of subscriptions with promo period. in “Purchases.shared.getOfferings” method changed from package.storeProduct.introductoryDiscount to package.storeProduct.discounts.first because otherwise it was not showing this 1-week free trial period. in purchasing: before performing purchase, I check if there is a discount available or not, and if available - make purchase with this method: Purchases.shared.purchase(package: package, promotionalOffer: promoOffer) { (transaction, customerInfo, erro
How to get current app version in Webhook Event and GET /subscriber REST API?
We have a problem where after applying a 20% / 30% discount on a product we do not fall within a price tier in Apple. For example we have 1 consumable product that is priced at £79.99. We offer 20% discount code’s to our users so we came up with a workaround to create a new product in Apple with a price of £63.99. i.e. 20% off £79.99. However we have come into an issue as Apple does not offer a price tier of £63.99. The solution we came up with, was to create a a new product with the value of £8.99 and allow the user to buy 8 of these products at the same time i.e. that would add up to £63.99. But from looking at the RevenueCat `purchaseProduct` API in React Native it does not allow you to set a quantity. Do you know if there is another way of achieving this using RevenueCat or even better, a way of using a custom price for a product in iOS?
Hi, we are getting a lot of "None of the products registered in the RevenueCat dashboard could be fetched from the Play Store" errors being logged in our app, but they happen intermittently and with no visible pattern.We have checked our whole setup and everything is correctly configured, and it also works fine in all the devices we have tried on. All google products linked in RC console show Store Status Ok .Is it possible that this error gets triggered when something else happens besides a bad RC configuration? Can you convert it to a different one, like unknown error? We usually filter those out, because there is nothing we can do. But we can't ignore an error that may point to a config error.Thank you
I am new and am testing this Framwork using weekly, monthly, yearly subscriptions.I have followed the whole document which in great detail indicates how to set up the Apple Store and Google Play.As code I am using the one from the example provided for Flutter developers.With Apple Store everything works, while (with the same code) with Google Play I get the error message: "The requested item is not available for purchase".But in the Google Play store are all "active" subscriptions.In RevenueCat the Entitlements, Offerings, Products are regularly configured.I just can't figure out where I may have gone wrong as I have followed all the steps and am using the code provided as an example. Debug Console:V/AudioManager( 3198): playSoundEffect effectType: 0 V/AudioManager( 3198): querySoundEffectsEnabled... I/flutter ( 3198): &&&&&&&&&&&&& purchase info are: Package{identifier: $rc_weekly, packageType: PackageType.weekly, product: Produc
I have two products with prices in Rs. 359 and Rs. 1079 in my Google Play Console but whenever I am using the SDK in my Flutter app, I am getting the prices as Rs. 360 and Rs. 1100. Why is this?
Hello, Using func isProGranted(customer: CustomerInfo) -> Bool { if let entitlement = customer.entitlements["PRO"] { return entitlement.isActive } return false }In the Delegate Callback extension SubscriptionViewModel:PurchasesDelegate { func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) { self.isPRO = manager.isProGranted(customer: customerInfo) }}The problem is, it returns true when we Cancel Subscription or when it is automatically expired
Some context I am creating an application that already has an existing web app. The web apps payments are done via Stripe. The mobile app I am building will have payments done via Revenuecat. I am setting a property on my user object to let me know which platform the user has used in order to pay for a subscription. Why am I doing this?If they have payed using stripe on web then I need to let them have access to all premium features on the mobile app. They should not have to pay for a subscription on the mobile app as well. Stripe makes this very easy with their Webhooks. When a user subscribes, a Webhook event gets sent to the backend that tells the user object to update the subscriptionPlatform to “web”. This way I know that the user has subscribed on web, should get access to all premium features on mobile too without duplicate subscribing, and should be directed to the web app to handle anything to do with their subscription. Stripe also allows all of this to be tested in developme
Hi,I’m currently trying to let users purchase an IAP on watchOS, but with the exact same code as on iOS (which works), I’m getting some errors (SDK version 4.2.1): 2022-04-21 14:05:00.526782+0200 Anime Manga Tracker Watch App WatchKit Extension[338:26944] [Purchases] - DEBUG: Make purchase called: purchase(sk1Product:payment:package:completion:)2022-04-21 14:05:00.532433+0200 Anime Manga Tracker Watch App WatchKit Extension[338:26944] [Purchases] - DEBUG: Purchasing product from package - com.xxxxx.xxxxx.xxxx in Offering XXXXX2022-04-21 14:05:00.534097+0200 Anime Manga Tracker Watch App WatchKit Extension[338:27113] [Purchases] - DEBUG: PaymentQueue updatedTransaction: com.xxxxx.xxxxx.xxxx 2000000012345678 () 2000000012345678 - 12022-04-21 14:05:00.553831+0200 Anime Manga Tracker Watch App WatchKit Extension[338:27113] [Purchases] - DEBUG: Unable to load receipt, ensure you are logged in to a valid Apple account.2022-04-21 14:05:00.554048+0200 Anime Manga Tracker Watch App WatchKi
Hi RevenueCat Community,I hope you're all doing well. I'm reaching out to seek assistance with some challenges we're facing while integrating RevenueCat into our mobile app. We would greatly appreciate any guidance or insights from the community. Here's a summary of the issues we're encountering: User Identifier Update: We have successfully implemented webhook integrations for subscription actions, but the user identifiers provided by RevenueCat are anonymous IDs. We need to associate these actions with specific users in our app. Is there any way to update the existing anonymous IDs of our current users to our preferred user IDs? This would help us maintain accurate correlations between subscription actions and user profiles. Subscription Cancellation Identification: Due to the anonymous IDs provided by RevenueCat, it's challenging for us to identify which user has cancelled their subscription when we receive webhook data on our server. Are there alternative methods or additional inf
I would like to have more than 2 offerings in my experiment. Is that possible? If not, can I create multiple experiments for one project
Hi all,I have noticed a number of apps in the iOS store that are able to show me how many active subscribers, by simply logging in. They can even display them on widgets! How are they able to get this number with me just logging in? Are they using some call in the REST API? I can’t seem to figure it out!Any information would be greatly appreciated as I am trying to make a small app to track my active count on my LaMetric clock.Many thanks,Dan
Hello everyone, we’ve been running various experiments with revenuecat for some time and finally I found myself quite confused as to how to interpret the results.Setup:Control: tier5 - has monthly and yearly subscription offeringsTreatment: tier6 - has a different monthly and yearly subscription offerings QuestionsWhy are all offerings mixed into both Control and Treatment arms? We clearly separate and would like to test tier5 vs tier6. Follow up: Why totals include offerings from a competing arm? E.g. Treatment arm (tier 6) is 820 in total and includes 14 yearly offerings from tier5?I’ve read through all the articles and discussions, but can’t really get it. Would really appreciate any insight here.
A Play store subscription with a 7 day free trial offer (active only for one region), is returning introductory price for other regions as well. Both the base plan and the offer are Backwards Compatible.
Hi all,When testing monthly subscriptions for an IOS app in Testflight, I have created 30+ test users via gmail accounts. Each time I have a new user create an account on my app and subscribe, the Sandbox data in Revenuecat switches all the Customer info to that new ID (uid in Firebase), including backdating activity. Is that expected behavior, or should each new account (aka new firebase UID) have it’s own identity in the Revenuecat Sandbox, so I can accurately test? Here is some example history for the current user. Does this look normal? I did have the user logout of their app for less than 24 hours but they did not “opt out” of renewal.Also see the transfer of the subscription. Is that how the testing works?
Hi, In order to conform with GDPR, when a user deletes his account, should we also delete the data populated in Firestore by the RevenueCat extension i.e data populated in the “events” and “customers” collections?For instance, I could easily delete “/customers/{app_user_ids}” documents but it gets tricky when I need to delete “/customers/{$RCAnonymousIDS}” documents because I would need to do a search in all these documents to target the ones that contain an “alias” to the app_user_id in question. Similarly, I would need to do the same for the “events” collection and i was wondering if I could avoid doing that and just not delete any of the data in “customers” and “events” collections and still comply with GDPR, could you please clarify? Br, Nader
We have multiple developers on the team that are working on our mobile IAP implementation, which means they all have to receive webhooks on their local dev machines to test things. So far we have been managing this by just changing the webhook URL as different people test, as well as having multiple RC apps to test with. This can be pretty cumbersome because we can’t duplicate apps, we have to create new ones fresh and go through the process of copying the existing configuration from the old app.It would be so much easier if we could just configure multiple endpoints that all webhooks get sent to. Is this possible, or something that we could get added to your backlog?Thanks.
Hello everyone,I apologize for the double post, as there was an issue with the previous one where some of my private data got published unintentionally. I appreciate your understanding.Now, I'm facing a challenge while implementing subscription functionality using RevenueCat, and I could really use your guidance. Here's the scenario:When a user clicks on any subscription plan on the paywall, I disable the buttons to prevent multiple clicks. However, I'm unsure how to handle the situation when the user closes the subscription sheet without completing the subscription process. This leaves them on the paywall without re-enabling the buttons.I would greatly appreciate any advice or suggestions on how to catch this event or find a solution that allows me to re-enable the buttons in this specific case. My goal is to ensure a seamless user experience, even when users accidentally close the subscription window.Button(action: { isProcessing = true if let package = subscriptionManager.pack
Hello, I’ve managed to invoke presentCodeRedemptionSheet() inside the react native app, and did successfully setup the subscription offer codes in the app store. However when we try to redeem the code, native modal says that the offer has already expired even though expiration date is in the future. Is it possible to test the subscription offer codes in the sandbox? thanks
First of all, Great product team!This is for macOS.I want to make sure following:Deny sandbox entitlements on AppStore AppStore reviewer should be able to access pro content after they do paymentLets say I use customerInfo.entitlements.activeInCurrentEnvironment[“pro”] to unlock access, what will happen when AppStore reviewer tests payment flow to unlock access? I assume it will not work as that environment uses sandbox for payments.I tested this on TestFlight and activeInCurrentEnvironment looks for non sandbox entitlements and does not find one.Basically this code of checking sandbox env ignores macOS TestFlight and I assume will ignore AppStore review environment also:BundleSandboxEnvironmentDetector:var isSandbox: Bool {return path.contains("Xcode/DerivedData") Also if I am doing this filtering myself instead of activeInCurrentEnvironment:For macOS TestFlight detection this gist works: https://gist.github.com/lukaskubanek/cbfcab29c0c93e0e9e0a16ab09586996Does anyone know safe way to
We implemented iOS offer codes, but not with revenueCat properly. So now subscriptions are being read, but the total paid / revenue is $0, when in reality it’s not.Is there a way to custom edit individual entries?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.