Discussion and help from anything related to RevenueCat.
Recently active
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
In The Case of a Change/ Changes in Custom UserID,what happens to the Older userID(s)?does the older custom user ID still old subscription privilege ? I am trying to cap the number of devices that can be signed in with a subscription with My logic, in the case where a user intentionally try to outsmart the system by signing in the same email they used in purchasing a subscription to many device in pursuance of premium access for multiple devices with a different Sign In with Apple or google sign in, my Logic create a new custom User ID for the original subscription account ,each an every time its been used with a new Auth, with the hope that each and every previous custom userID would be redundant , hence limiting number of account that is allowed for one subscription account . So please, tell me what will happen to the previous custom IDs that were created before the the account was assigned a new one .. thanks
Docs say not to configure RevenueCat in -application:didFinishLaunchingWithOptions: when using custom user ids since iOS 15+ prewarming. Instead configure in your root view controller’s initialization method. Which ‘initialization’ method is that? The +initialization factory method, or the -init instance method? https://www.revenuecat.com/docs/user-ids#provide-app-user-id-on-configuration Provide App User ID on configuration ❗️iOS 15+ PrewarmingIn certain cases, iOS may prewarm your app - this essentially means your app will be launched silently in the background to improve app launch times for your users.If you are not using RevenueCat's anonymous IDs as described above, and are instead providing your own app user ID on configuration, do not call configure in application:didFinishLaunchingWithOptions:. Instead, call the configure method in your root view controller's initialization method.
In swift, when I purchase a consumable item, it sends a receipt to the server for validation. In storekit, I know that it checks the purchase history of the consumable item on the server and then calls the finishtransaction() function inside the app.So how can revenucat do this? When I use revenucat, I tried to check the purchase history on the server but there is no history. Please tell me how to do it.Thanks.
Can I use Google Play Developer API and App Store Server API (e.g. cancel, defer, extend) if needed? Will it affect subscription management of RevenueCat if I use those original APIs rather than RevenueCat REST API?
I’m using revenueCat in my flutter project, when building my app in Xcode it throw this exception:RevenueCat requires Xcode 13.2 with Swift 5.5.2 to compile. installed Xcode version: Version 14.2 (14C18)swift --version:swift-driver version: 1.62.15 Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)Target: x86_64-apple-macosx12.0any help?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.