Discussion and help from anything related to RevenueCat.
Recently active
Hi Our app is using Revenue Cat’s Cordova Android Plugin (latest version) and even though everything works fine when deploying on the development mobile devices and also the purchases succeed (and pretty much any SDK/API interaction), when trying to publish the bundle we are getting the deprecation error (with link to https://developer.android.com/google/play/billing/deprecation-faq).Now, the com.google.android.play.billingclient.version is missing indeed from the AndroidManifest.xml and if I tried adding it manually and specifying 5.0.0 (just trial and error) it failed (merge error - so it seems to be trying to merge something!) and I finally ended up adding this line:<meta-data android:name="com.google.android.play.billingclient.version" android:value="4.1.0" />And it works! Google accepted our bundle, but I’d really like to get this fixed properly.Any suggestions?
For example this is how I would fetch the info about a user. First I need to set the unique user id during the configuration:Purchases.configure(“PUBLIC_KEY”).appUserID(userId).build()) Then after a purchase I could simply obtain it:http get https://api.revenuecat.com/v1/subscribers/$USER_ID Authorization:"Bearer XXXX" Content-Type:"application/json" X-Platform:android accept:"application/json" The problem with userID is that they will get lost, if the user deletes the app and reinstalls it, and will no longer have access to the existing purchases. The only way would be creating an email signup in the flow, which I was hoping to avoid. The other way is to use anonymous users:Purchases.configure(“PUBLIC_KEY”).build())Now ReveneCat can create aliases and merge the ids upon reinstallation as long as it’s the same user in Google PlayStore that made the purchases. This solves the problem, but now I have no way to double check the entitlement from the server side through RevenueCat’s RestAP
I have a Flutter app running that uses the RevenueCat SDK. I install the app on my iPhone and make a purchase which utilizes the devices assigned Apple ID to track purchases.Thus works.Then, I assign a fresh unused AppStore sandbox userID in Settings/AppStore/SandboxAccount. When I run the app thru VSCode development tools, the Purchases.configure call accesses the RevenueCat cache for the device Apple ID. It does not recognize that the assignment of a Sandbox ID and running through the development tool invokes a different Apple ID and the cache is invalid. I am trying to use the fact that there is no RevenueCat customer entitlements for my app to recognize a new user, but the return of old invalid cached customer info for a different customer is making tis impossible. I tried using invalidateCache with this code, but it does not ignore the cache……. static Future<void> configure( ) async { if (Platform.isAndroid) { configuration = PurchasesConfiguration("public_google_
I want to give my customers a limited period discount for the lifetime product in my app, and I want to show both the original price and the discount price for that product in the paywall so that my customers would know how much they could save if they purchase now. I have configured a price change on App Store connect for this IAP product, and I wonder how I can get the original price and the discount price? It seems that the `package.storeProduct.localizedPriceString` gives me the discount price and I didn’t find a way to get the original price.
I tried to purchase consumable products at Test Flight and Xcode. When I try to purchase a consumable product that I’ve just purchased, RevenueCat does automatically purchase the product but does not show the payment popup, and I’m not seeing this transaction at RevenueCat dashboard. I’m concerned that it’ll be same at production environment. Any help?
Hi,I’m trying to configure AppsFlyer and RevenueCat. And I’m getting following errors in the console:[Purchases] - ERROR: 😿‼️ Error when syncing subscriber attributes. Details: The operation couldn’t be completed. (RevenueCat.BackendError error 0.) [Purchases] - ERROR: 😿‼️ One or more of the attributes sent could not be saved. ["$idfv": "IDFV cannot be modified.", "$appsflyerId": "AppsFlyer ID cannot be modified."] If I understand correctly, the AppsFlyer ID will be generated every time a user installs a new app. As users use multiple devices, I think this error will occur for every user who uses two or more devices. If this is the case, why is it shown as an error? Alternatively, how can I configure AppsFlyer and RevenueCat so that the AppsFlyer ID is unique? It seems impossible without IDFA
.
This piece of Swift codePurchases.shared.getCustomerInfo { [weak self] info, error in guard let info = info, error == nil else { return } if info.entitlements["monthly_access"]?.isActive == true {Is always returning isActive == true, even though the entitlement has expired.Since I have the original app user ID, I checked with the v1 API and this is what I get:{'request_date': '2023-04-19T09:03:03Z', 'request_date_ms': 1681894983925, 'subscriber': {'entitlements': {'monthly_access': {'expires_date': '2023-04-18T11:14:37Z', 'grace_period_expires_date': None, 'product_identifier': 'subscription_basic', 'purchase_date': '2023-03-18T11:14:37Z'}}, …As you can see the monthly_access exists but its expiration date is older than the current date so I would not expect this to return isActive trueThis is a big issue because it allows people to access the app even though they are not paying (I would say very essential feature of the SDK is to prevent people from accessing features they are n
I am trying to find a way to delve into billing errors for our customers. While there is a way to filter these in the customer panel, this only shows current billing errors and not those that moved to cancellation due to a previous billing error. Is there a way to find this information?
I want to use RevenueCat only with non-anonymous appUserIDs.I am using the CloudKit recordID.recordName of the user as a unique user ID. This recordName should be consistent across reinstalls and across devices as long as the user is logged in with his same AppleID.I am getting that userID async during launch of my app and it may not yet be available when I call Purchases.configure().My question: Will the customerInfo that gets created during .configure() be alway associated correctly with the customerInfo of the user with the appUserID (CloudKit recordName) if I call .configure() first at app launch and typically a few moments later .login() with the appUserID?Or does this create lots of “dangling” anonymous customerInfo records in RC that have no future use? I have read the login alias information in the docs: https://www.revenuecat.com/docs/user-idsBut I am still not certain about what happens. Especially line three in that table“Anonymous Yes Yes CustomerInfo transfers to
Hi all,I am currently playing around with the changes that come with billing client 5 implemented in the RevenueCat Flutter SDK version 5.0.0-beta.1, and I am getting an unexpected identifier on the StoreProducts:List<String> products = ['subscription_annual'];List<StoreProduct> storeProducts = [...await Purchases.getProducts(products, productType: ProductType.subs),...await Purchases.getProducts(products, productType: ProductType.inapp),];for (StoreProduct e in storeProducts) { print(e.identifier); // Prints subscription_annual:p1y}I would expect the identifier to be identical to the product that I am retrieving from Google Play, but it appears it defaults to something like product:basePlanId. The defaultOption and subscriptionOptions appear to be correct: productId has the product, storeProductId has the product:basePlanId.Am I missing something?What would it look like if I had multiple base plans? Would I receive multiple StoreProducts from RevenueCat or would I get a n
Hi to everyone,I configured RevenueCat Integration with Facebook Ads following the official documentation. My goal is to track Trials and Purchases of an Auto-Renewable Subscription inside Facebook Ads Manager so I can check for every ad how much it converts.The problem is that events, according RevenueCat Dashboard, been sent successfully but inside Facebook Dashboard I can’t see any events.PLATFORM: iOS
I have been unable to install or uninstall the Revenuecat Purchases Firestore Extension. After trying to then uninstall, I have received the following error. Note that we have Google Cloud Associated with this project and so IAM permissions etc. There is nothing about this in the documentation and how Google Cloud IAM permissions might affect the Extension installation or uninstallation. My account has full Owner permissions, as well as Service Usage Admin, Firebase Admin, and Eventarc admin. This is the error:> Error: ; RESOURCE_ERROR at /deployments/firebase-ext-firestore-revenuecat-purchases/resources/mods-api-enable-eventarcpublishing: {"ResourceType":"deploymentmanager.v2.virtual.enableService","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Permission denied to enable service [eventarcpublishing.googleapis.com]\nHelp Token: help-token-here","status":"PERMISSION_DENIED","details":[{"@type":"type.googleapis.com/google.rpc.PreconditionFailure","violations"
Revenue cat firebase integration events need to don't track sandbox purchases, i tried to disable in firebase extension Test events tracking, but still getting events with environment SANDBOX, how can i disable sandbox purchase tracking to firebase?
I’m a basic developer and have found an idea of which I would like to monetise with a monthly subscription. It’s a simple two page app - which the base has been written. However I would really like to now integrate RevenueCat into this to enable monthly subs. Is there a pool of developers that, with payment can help out with this as I’m going around in circles.
I am using cordova-plugin-purchases in my App. I’ve noticed many “Had their subscription of vetcalculators_monthly_android:vetcalculators-monthly-android cancelled due to a billing error” comments in my sandbox testing recently. (Also in iOS). I’ve not changed anything in my code and wondering why this is happening. Also, I am wondering if there is a way to access this particular revenuecat info from within the App using the SDK or API: { "app_id": "app2c0d07f6dd", "app_user_id": "$RCAnonymousID:420b573c1e75455aae4bc433fea3979f", "cancel_reason": "BILLING_ERROR", "country_code": "US", "currency": "USD", "entitlement_ids": [ "monthly" ], "environment": "SANDBOX", "event_timestamp_ms": 1681342243670, "expiration_at_ms": 1681342232285, "is_family_share": false, "offer_code": null, "period_type": "NORMAL", "price": 3.99, "price_in_purchased_currency": 3.99, "product_id": "vetcalculators_monthly_android:vetcalculators-monthly-android", "product_price_in_purchased_curren
Hello everyone,After releasing my app with a subscription price of $5.99 and gaining a few subscribers, we decided to lower the price in a few countries on Apple and Google In-App Payments. Unfortunately, one of our subscribers was impacted by this change and reported that Apple charged them the updated price, but RevenueCat still showed the previous price of $5.99 in their last payment.Fortunately, the customer was charged correctly, but we're now concerned about the accuracy of the information shown in RevenueCat. Is there something we need to change in RevenueCat when we update the price on Apple and Google? What are we missing?Thank you in advance.
When I upgade my plans from Starter to Pro, found this error: There was a problem updating your plan, please try again or visit our Help Center.
I have setup offerings and fetching them in my react-native app using getOfferings function.I do get all the offerings but all the offering only has the backwards compatible product in their product key.{ identifier: "$rc_monthly", offeringIdentifier: "premium", packageType: "MONTHLY", product: { currencyCode: "BDT", description: "...", discounts: null, identifier: "premium", introPrice: null, price: 23000, priceString: "BDT 23,000.00", productCategory: "SUBSCRIPTION", productType: "AUTO_RENEWABLE_SUBSCRIPTION", subscriptionPeriod: "P1Y", title: "Premium (Dating Vill)", },}{ identifier: "$rc_six_month", offeringIdentifier: "premium", packageType: "SIX_MONTH", product: { currencyCode: "BDT", description: "...", discounts: null, identifier: "premium", introPrice: null, price: 23000, priceString: "BDT 23,000.00", productCategory: "SUBSCRIPTION", productType: "AUTO_RENEWABLE_SUBSCRIPTION", subscriptionPeriod: "P1Y", title: "Premium (Dating Vill)", },}Both time returni
Hey Folks,My production application is not working, because Firebase extension version is not correct. I’ve updated my Firebase extension to v0.1.7 and I’m getting this error:`{"code":2,"message":"The version of this extension is not the same. Extension version 0.1.7, Api version: 0.1.6. Please retry the request with the correct version","extension_version":"0.1.7"}` Related Github issue: https://github.com/RevenueCat/firestore-revenuecat-purchases/issues/51I think this commit went wrong: https://github.com/RevenueCat/firestore-revenuecat-purchases/commit/522615658d01213484cfcf7aa55cb648792878f8#diff-e6a35fcf3c90f75b27c14eb559ddcf8cd259b4e1a2cf49f73d3ed9f91229fccdR31
After looking at some posts, I saw that for iOS, if a user gets a refund through Apple, it is automatically detected. Does this mean that the entitlement is automatically removed? In the case of Flutter, can we directly check it using customerInfo.entitlements.all['pro']?.isActive?
Hi cool revenuecats and kittens,We have built an app and we are working with revenuecat to facilitate in-app subscriptions. We’ve set everything up correctly, but for some reason there is still something going wrong in getting the subscriptions for iOS. It works for Android. We have tried to debug and found the following:When we try to await Purchases.getOfferings(), this is the output that we are getting: [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] If we try to send API calls directly to RevenueCat using postman, we do get offerings back from the API. Just like this code we tried in-app, that seems to work. const options = { method: "GET", headers: { accept: "applica
Hi ! I am configuring the SDK in a React Native app in Expo, using eas build.The doc indicates the following :To see your configured products in your Android app, you’ll need to upload this APK to Google Play. This APK does not need to be released to production—uploading it to an internal track is sufficient.But the APK built to test the app in the device can not be uploaded to the Play Store since they only accept .aab files Trying to get the offerings in my app triggers the following errors :There is an issue with your configuration. Check the underlying error for more details.at node_modules/react-native/Libraries/BatchedBridge/NativeModules.js:105:59 in promiseMethodWrapperat node_modules/react-native-purchases/dist/purchases.js:266:33 in __generator$argument_1at node_modules/react-native-purchases/dist/purchases.js:31:43 in stepat node_modules/react-native-purchases/dist/purchases.js:14:30 in <anonymous>at node_modules/react-native-purchases/dist/purchases.js:5:40 in fulfill
I’m wondering what happens in the scenario when subscription auto-renew is enabled and an RC account has been deleted. For instance: Member deletes account from app RC account is deleted through REST API Subscription is not cancelled in App store and auto-renew is enabled Auto-renew date is due…At this point is a new random RC account created? Does auto-renew still work when an account has been deleted?
Hi team,I’ve been working on integrating RevenueCat into my iOS app. The app itself is super simple but it comes with some app extensions. The extensions themselves don’t have access to internet (yes, that’s a restriction). Therefore, I’m using a group user defaults to share the subscription states between the app and the extensions.Now, the app itself mostly won’t be opened by the user often, which has caused an issue as follow:The user opens the app and subscribes to be a Pro. The app shared the Pro status via user defaults with the extensions. Every time the extension is running, it checks the user default value and decide what entitlement the user has. After a while, the user cancels the subscription in the App Store subscription management screen. The subscription ends soon after that. The extensions still think the user has the Pro subscription because the user hasn’t opened the app since then.How do I make sure the subscription state is updated in a timely manner when the app it
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.