Discussion and help from anything related to RevenueCat.
Recently active
Hi,I want to change the text based on Product. Atleast some part.To be more clearWeekly users have 100 credits.Monthly users have 400 credits.Yearly users have 10,000 credits Is that possible with built-in paywalls or Do I need to create my custom Paywall?
Hello! My app is made using flutter and purchases_flutter. About a month ago I upgraded purchases_flutter from 5.6.5 to 6.30.2. The software update has been accepted, but a few days ago I received the following message:We found an issue in the following area(s):Version code 26: Policy Declaration - Data Safety Section: Device Or Other IDs Data Type - Device Or Other IDs (some common examples may include Advertising ID, Android ID, IMEI, BSSID, MAC address)I checked my merged manifest file and there is no <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>code inside manifest. I’ve seen this article: Google Play's Data Safety and it talks only about purchase history (financial data). In my existing data security form, I declared that the application does not process any data (I have not seen the above mentioned article before).What to do? Submit a declaration on processing only financial data (Google clearly writes about Device Or Other IDs). Is it possible t
Hey guys I facing this issue trying to use the react-native-purchases-ui, when I tri to build running npx expo run:android I receiving this error. My packages:"expo": "~51.0.28","@expo/config": "~9.0.0","@babel/core": "^7.20.0","react-native": "0.74.5","react-native-purchases": "^8.0.1","react-native-purchases-ui": "^8.0.1",My build config: [ "expo-build-properties", { "ios": { "useFrameworks": "static" }, "android": { "compileSdkVersion": 34, "targetSdkVersion": 34, "buildToolsVersion": "34.0.0", "minSdkVersion": 24, "enableProguardInReleaseBuilds": true, "enableShrinkResourcesInReleaseBuilds": true, "enablePngCrunchInReleaseBuilds": true } } ]FAILURE: Build failed with an exception.* What went wrong:Could not determine the dependencies of task ':app:processDebugResources'.> Could not resolve all dependencies for configuration ':
After the new 'default language' feature was introduced, I couldn't save any changes to the paywall because it requires me to add a default language. However, when I try to select a default language, it doesn't work, it just stays there and does nothing.
I originally went with glassfy 2 years ago because their docs and setup for capacitor were simpler to understand. Unfortunately, they’ve now gone defunct, so I need to migrate to RC. have two apps that I need to migrate. One app is very seasonal, so glassfy may not exist any more when the users finally open their app. The other, I had issues with android not sending the subscription into to glassfy anyway, and their support refused to respond. My main question:can I simply call syncPurchases once for all users the first time they run the updated app version that has RC integrated?If I can simply call syncPurchases once on update, and each user who does this will automatically be given their subscription access, that would be great. Can anyone confirm this would work? Or do I need to do something more complicated?
I deleted a package under one offering and added it under another offering, and it will not show on the Paywall. I used the same identified for both, because it was the same package, and the system allowed it. I guess I don’t really understand why we define packages per offering and not packages outside of offerings that can be added to offerings; because I wouldn’t have deleted this package in general, but I needed it removed from the other offering, and I need all my packages to have consistent names. This makes no sense to me - how do I get this package to show on the paywall? The offering shows no error, it shows 3 packages, yet only 2 show on the paywall. Can anyone help me?
I want to test Experiments, but I am not sure I want to upgrade until I know Experiments will work for me, since you can’t downgrade. I have two Paywalls, one my default Paywall, for the “Upgrade” app version, and one a “Tip Jar” for consumables. At this point, I want to run experiments on different Tip Jar offerings to see which ones will evoke greater success. But I’m not sure how to do this because, for the non-default offering, I need to set the name of the offering in the app programmatically. Can an experiment be done for my Tip Jar if this is my current setup? Also, wouldn’t it make sense for RevenueCat to have more than one default offering, like have the main default, but sub defaults for when we display multiple paywalls in an app, that we could change them without having to launch a new version of the app?
when I try my following code to see if I can get Standard offer, useEffect(() => {setLoading(true);const fetchOfferings = async () => {// console.log("test");try {const offerings = await Purchases.getOfferings();if (Platform.OS === "android") {console.log("android offerings",JSON.stringify(offerings.all.Standard, null, 2));}if (Platform.OS === "ios") {console.log("ios offerings",JSON.stringify(offerings.all.Standard, null, 2));} if (offerings) {// console.log("offering", offerings.all["onboarding"]);if (Platform.OS === "ios") {setOffering(offerings.all["Default"]);} else {setOffering(offerings.all["Default"]);}}} catch (e) {console.error(e);} finally {setLoading(false);}}; fetchOfferings();}, []);I got LOG ios offerings { "availablePackages": [ { "offeringIdentifier": "Standard", "product": { "priceString": "$4.00", "pricePerMonth": 4, "pricePerYear": 48, "productCategory": "SUBSCRIPTION", "subscriptionPeriod": "P1M", "pri
Hi, I’m using the latest version of RevenueCat SDK on Android 5.7.1. I’ve noticed in debug logs that `AppInBackground` is always `true` even through the app is at foreground.This has caused some issues, such as cache not being updated in time. IIUC if app is in background, the SDK only updates cache once a day instead of the default 5 mins. Also, I realise that offerings are not being cached at app launch. When I start the activity with paywall, there’s always a noticeably delay of 2-3s to fetch the offerings. I’m not sure if this is related to `AppInBackground` always being `true`. Here’s a complete list of debug logs when I open the app```2023-02-14 01:15:11.298 30603-30603 [Purchases] - DEBUG com.yygg.note.app D ℹ️ Debug logging enabled2023-02-14 01:15:11.298 30603-30603 [Purchases] - DEBUG com.yygg.note.app D ℹ️ SDK Version - 5.7.12023-02-14 01:15:11.298 30603-30603 [Purchases] - DEBUG com.yygg.note.app D ℹ️ Pa
Hello,I’m using the latest Revenue Cat SDK (8.4.0) and i’m trying to do the following use case in Sandbox :Subscribe to a monthly subscription Immediately refund it from Revenue Cat dashboard Open the app and see that the premium content is no longer available for the userI’m callingPurchases.sharedInstance.getCustomerInfoWith(fetchPolicy = CacheFetchPolicy.NOT_STALE_CACHED_OR_CURRENT) { customerInfo -> checkStatus(customerInfo) }And always get this Logs : Retrieving customer info with policy: NOT_STALE_CACHED_OR_CURRENTℹ️ Checking if cache is stale AppInBackground trueℹ️ Vending CustomerInfo from cache. Something weird here, is that AppInBackground is always returning TRUE.This means that the cache will not be stale before the 25 hours delay and never within the 5 minutes delays for foreground application. Then the cache is never updatedI’m initializing my Purchases only once in the onCreate of my Application classif (BuildConfig.DEBUG) { Purchases.logLevel = L
Everything is working as expected using internal testing with the apk file. As soon as I upload the aab file as part of the same build, my in app purchases do not trigger on android. I can’t seem to troubleshoot this since it’s working locally and with the apk, but not during closed testing. Has anyone experienced this or have any advice? Thanks.
Our app subscriptions are currently done via appstore and playstore purchases and we’re trying to add stripe into the mix. But we’re not sure how to handle the case where an old user signs back after a new subscription as anonymous. In case of appstore and playstore purchases, the transfer purchase call does the job but not so in stripe purchases. How is this to be handled? Just post a second receipt against the signed in user’s app user id? It’ll result in the stripe subscription attached to both revenuecat customers. I’m not sure about any unintended side effects of this flow. Is this the way to go here? Or am I missing something
This might be just a confirmation type of question, but I wanted to understand how this scenario works:user subscribes to a one month, no-trial subscription user gets entitlements and the webhook event comes as expected user cancels / opts-out of renewal 30 minutes from first subscribe event above the entitlement are still there as expected and will be there for ~30 days still will the cost of this subscription still flow through as revenue or is this considered a refund?
I’m sandbox testing subscriptions (iOS). A sandbox user created a subscription, and I see the subscription shown in the Customers portal. However, the ID doesn’t match the ID logged in the Xcode console (`Purchases.shared.customerInfo().id`). This is an anonymous user ID. Shouldn’t these IDs match?
Hey folks,We have a good amount of users who sign up multiple years in a row with different email addresses and then our purchase history for them shows them incorrect offers because they don’t get linked up in the RevenueCat backend. I don’t know this for sure, but I suspect many people are also removing our app in the interim (which may be part of what makes this trickier)We’re trying to call `syncPurchases` whenever we have a successful login (so they aren’t anonymous IDs). But we still don’t get it right.If I call `restorePurchases` where we’ve called `syncPurchases`, everything works. Of course, the caveat is that the OS-level login prompt sometimes shows up. Is this a RevenueCat bug? My understanding is that `syncPurchases` should basically be a drop in replacement for `restorePurchases` with no prompts. Using React Native and code push, I’ve been able to verify the only thing I need to make my logic work is to switch `syncPurchases` with `restorePurchases`, but I’m reluctant to
For the multi-tier paywall, is it possible to pick which tier it starts on? For instance, we have a pro tier and a premium tier. When the paywall shows, is it possible to have the premium tier show by default, even though it technically is second in the paywall (pro tab is before premium).
Hi,I've encountered an issue while integrating RevenueCat into my Expo project, and I need some guidance to resolve it.Here's what I have done so far:I initially added my products to App Store Connect. Then, I connected my App Store Connect account to RevenueCat using the App Store Connect API. After that, I tried to create new products in RevenueCat, and I was able to list the products directly from App Store Connect. I successfully added them from there. I created my offers and linked them to the products.However, when I run const offerings = await Purchases.getOfferings(); in my Expo project, I encounter the following error: [Error: There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. 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).More information: https://rev.cat/why-are-offerings-empty] I am try
I deleted a package identifier in an offering I was setting up. I then tried to add the identifier back in with the same ‘name’ and description and I get the message that the package identifier already exists. However, it is no longer in the list. Does this mean that I cannot delete package identifiers and then re-add them back in if I change my mind on an offering that is not current. What happens if I delete the complete offering? Will all package identifiers I used no longer be available to re-use in a new offer? Thanks
Hi,The “Checking Subscription Status” page in the documentation says “It's important to note that CustomerInfo will be empty if no purchases have been made and no transactions have been synced. This means that entitlements may not exist in CustomerInfo even if they have been set up in the RevenueCat dashboard.”“originalAppUserId” is on CustomerInfo, and I’m using “originalAppUserId” to identify customers who want to remain anonymous before they purchase a subscription (I use “originalAppUserId” as the key to store data in Firebase which they will need to have access to before and after subscribing). Will this property be empty too?If it is, is “originalAppUserId” available anywhere else prior to CustomerInfo being created, or can I force the creation of CustomerInfo (by calling syncPurchases for example)?Failing that, am I safe to assume that where “originalAppUserId” isn’t available I can use “appUserID” and assume that will become the “originalAppUserId” once the user has subscribed?
I just spent a good deal of time setting up offerings for consumable products. I have many different variations I would like to try with the A/B experimental testing method. In trying to setup a Paywall, I found that they are geared solely toward subscriptions and not at all toward consumable products. Is this something that I am not supposed to do? Would I be “hacking” the system if I did it? Are there any ways I can customize a template to show an offering that is made up of consumable products in a way that makes sense? Please help!
Recently I’m getting a few users complaining that they are receiving an Error Code 17 when pressing Restore on the App Paywall page.Your documentation says: “InvalidAppleSubscriptionKeyError(17, "Apple Subscription Key is invalid or not present. " + "In order to provide subscription offers, you must first generate a subscription key. " + "Please see https://docs.revenuecat.com/docs/ios-subscription-offers for more info.")” which I don’t understand. Has is something to do with a user being on a free trial and an issue with going on to the paying phase? Is there anyway I can see exactly what has happened with an individual user?
Which of these delegate methods are expected to be called upon completion of a purchase, or are both expected to be called? I can’t find any documentation at all on the site for PaywallViewControllerDelegate, am I missing something? I can tell what sometimes happens, but I would really like to know what is the expected/prescribed behavior for these two delegate methods. If I put the same actions in both for a successful purchase, it could cause problems, and I don’t want to have to deal with a race condition.paywallViewController(_, didFinishPurchasingWith: )paywallViewController(_, didFinishPurchasingWith: , transaction: )
My company’s business model is changing, and part of the plan is to change our iOS subscription app to a free app. Preferably this will be a smooth experience for existing users.The app’s history:Available in TestFlight. Fewer than 100 beta testers. Public release as a fixed price paid app in the App Store. Beta testers got the app free. Change from fixed price app to monthly/annual subscription app with a free trial. Pre-existing users given free lifetime subscription. (Planned) Change from a subscription app to a completely free app.What’s the most straightforward way to convert the app from subscription to free? I’d like to know what changes to make in the App Store, and what changes to make in RevenueCat.The code changes within the app seem straightforward enough: remove the paywall, modify the storyboards, remove calls such as Purchases.shared.getOfferings { … }, and so on.Once the app has been changed from subscription to free, what happens to current subscribers? For example, wo
Is there a way to give user’s 3 days free of pro without subscribing to the actual subscription?I’d like to upgrade them to pro for a few days so that they can try it and then downgrade them after the trial and prompt them that they can get another week for free once they subscribe.Duolingo has this model when you reach a certain amount of days, they give you 3 days free of pro without subscribing.Is there a way for me to do this?
I’m using purchases_flutter: ^7.0.2 and still getting warning from google play consoleI already waited days and noting changed, I’m afraid to lose my app because of deadline, please help, thank you
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.