Get help with your SDK implementation.
Recently active
Hello, I have some issues with the app review.I have tested it using an android and iOS simulators and I can fetch the entitlements without any issue, I can see the description, price etc and the subscription works.However after installing the app through the TestFlight application, when I fetch the entitlements, I only see the price.Any idea why could this happen?Thanks
verbatim copy of code from the documentation: const sdk = require('api')('@revenuecat/v4.0#1yz2c0m2sl5v5md8q');sdk.auth('Bearer REVENUECAT_API_KEY');sdk.deleteSubscriber({app_user_id: 'app_user_id'}) .then(res => console.log(res)) .catch(err => console.error(err));produces this error:Error: Sorry, `deleteSubscriber` does not appear to be a valid operation on this API. at Proxy.<anonymous> (/workspace/node_modules/api/src/index.js:164:21) at processTicksAndRejections (node:internal/process/task_queues:96:5)
Apologies for a basic question. This is my first RevenueCat project…I’m running an Expo managed project for React Native. react-native-purchases is installed and imported. I can call setDebugLogsEnabled successfully. But I cannot see a “setup” method on the Purchases object? If I type the code to run setup() I get the following error:What am I missing?Thx!
I’m implementing 2 promotional offers, and have been following the official documentation. I tried to add the source code in the docs to obtain the promotional offers, like this:if let discount = package.storeProduct.discounts.first { Purchases.shared.getPromotionalOffer(forProductDiscount: discount, product: package.storeProduct) { (promoOffer, error) in if let promoOffer = promoOffer { // Promotional Offer validated, show terms of your offer to your customers } else { // Promotional Offer was not validated, default to normal package terms } } } but I don’t know how to obtain ‘package’, which appears in the first line of the above code.
I think this was posted before and it is one of the most commen issues but I spent about a week but got nowhere with it.What I have done:Terms and condition via AppStore is all accepted Paid and Free agreement are all good to go Tax requirement are all good to go Renewable Subscription is approved by apple The app works fine with Configuration.storekit file for testing purposes But when we want to go live the following occurs all the time DEBUG: ℹ️ GetOfferingsOperation: Finished2022-08-10 17:06:20.809370+0100 [39243:2154986] [Purchases] - DEBUG: ℹ️ No existing products cached, starting store products request for: ["1637274019"]2022-08-10 17:06:20.809459+0100[39243:2154856] [Purchases] - DEBUG: ℹ️ Serial request done: GET subscribers/$RCAnonymousID%3A0738ae9570e14463a4044d2762350199/offerings, 0 requests left in the queue2022-08-10 17:06:20.842004+0100[39243:2154986] [Purchases] - DEBUG: 😻 Store products request finished2022-08-10 17:06:20.842004+0100[39243:2154855] [Purchases] - DEBU
I have the following issue:My app requires being logged in, otherwise I don’t make use of the RevenueCat SDK, meaning that when I init() the Purchases I always provide the userID. When the user logs out, I also call the logOut() method in the SDK.If I make a purchase with account A, then log out, create a new account B and make a new purchase, on iOS at least I get a pop up saying the I am already subscribed and no matter if I press Manage or OK, the SDK will return that I have an active entitlement and make the account B premium.This is really bad, since with one account you could create multiple accounts that automatically will get the premium status.Am I doing something wrong? Is this just happening when I use the simulator with the StoreKit? I don’t want to have this behaviour in production.Thanks!
I am testing revenue cat 4.0 with Unity 2020.3.8f1 on fire tablet amazon but the callback of Purchases.GetOfferings is never called. With other platforms (iOS and google play) it works correctly.I’ve already configured amazon revenuecat key, shared amazon key,set useAmazon=true and enable sandbox mode as write here: https://developer.amazon.com/docs/in-app-purchasing/drm-sample-app.html#step-6-enter-sandbox-modeI have created a scene empty with your script “PurchasesListener.cs” (and Purchases.cs) to replicated the issue.The callback in GetOfferings is never called either on PurchasesListener.Start() or when you pressed on the UI Button “GetOfferings”
I using Flutter SDK and have some problems with Google play.for example I have 2 device A and B using the same google play accountI install app and purchase subscription on device A when I install app on device B, Google Play automatically restores purchases (appUserId on device A and B is not the same)So how can I prevent device B automatically restores purchases. I setup with revenuecat with appUserId like that: Purchases.setup(Constants.googleApiKey, appUserId: userId)When running on device B, I have a log like that: “WARN: ⚠️ allowSharingPlayStoreAccount is set to false and restorePurchases has been called. This will 'alias' any app user id's sharing the same receipt. Are you sure you want to do this? More info here: https://errors.rev.cat/allowsSharingPlayStoreAccount”
Hi, I’ve configured Free Trial offer on both Monthly and Yearly Plans in Google Play Store.The free trial (14 days) shows up in payment sheet incase of Yearly plans, but not incase of Monthly plans.The configuration is exactly the same in both monthly and yearly subscriptions and when I fetch the product info I get the following object - {…,freeTrialPeriod:”P2W”,...} in Logcat. Following the eligibility criteria - I fetch all entitlements and allPurchasedProductIdentifiers to make sure that user has not subscribed to the plan beforehand So, I’m not sure why its not reflecting in pay sheet only in case of monthly plans.Any help regarding this topic will be appreciated.
Want object structure and demo values for return object of Purchases.getOfferings(). It returns an object of “current” and “all” keys. And don’t return demo values with which we can test in debug mode.
Hello,I see this is a very common problem. I have waited 4 days but I still get this error. I think I have created the service and pasted the JSON file correctly to RevenueCat. My question is if there is any way to check that the credentials are correct without having to make a transaction at source code level. How could I check if the credentials are working let’s say in an external way? If I re-create the keys and set a new JSON file, will I need to way again between 24-48 hours? Or this only happens when the service account is created? I would like to continue with the development but currently I am stuck since I cannot test some notifications due to the transactions being rolled back because of the credentials issue. Thanks.
We’ve got an issue where the PurchaserInfo is empty when using same appUserID but different device/platform. We’re using the Legacy (Alias) mode because we want the user to share the entitlements across multiple devices.This scenario is: Android (paying Subscriber) -> iOS (new device)Is what we’re trying to do possible? Is there a reason why the PurchaserInfo would be empty on the iOS device.We checked to see if RC is throwing any errors when restore purchases is pressed, which it isn’t. Obviously, we don’t expect Restore Purchases to actually restore a purchase, but we do expect it to send the entitlements for the appUserID. Is our understanding correct?
I’ve encountered an issue using Xcode 14 beta 4. Updated to RevenueCat 4.9.0 and still seeing the issue. If I use a StoreKit config file with an iOS 16 simulator, when I attempt to make a purchase, the iOS pay dialog never appears and I get RevenueCat.ErrorCode Code=1 "Purchase was cancelled." If I switch to an iOS 15 simulator, it works fine. If I switch to a different scheme that doesn’t use StoreKit, I get the iOS dialog to sign in. If I try this on my own iOS 16 device, it works fine. It seems to only be an issue while using the simulator with iOS 16. Here is what I get when I print out the error.Error Domain=RevenueCat.ErrorCode Code=1 "Purchase was cancelled." UserInfo={source_file=RevenueCat/SKError+Extensions.swift:33, source_function=asPurchasesError, readable_error_code=PURCHASE_CANCELLED, NSLocalizedDescription=Purchase was cancelled., NSUnderlyingError=0x7f85d1a9e2e0 {Error Domain=SKErrorDomain Code=2 "(null)" UserInfo={NSUnderlyingError=0x7f85d1a9e260 {Error Domain=ASDErro
There is another question out there marked as solved (see below) however I believe there is a need to re-open this as per recent changes to Google policy. Google is now requiring apps to allow for cancelling a subscription from within an app. An email was sent to app developers about a policy change: We’re updating our Subscriptions policy to state that users must be able to easily cancel their subscriptions from within the app. You’ll have at least 30 days from the date of this notification to update your app to comply with the following policy changes.As this is not currently possible via RevenuCat it means that apps are in danger of being in violation of Google policies and banned from the Play Store. We urgently need a way to cancel a subscription so that it does not renew but without refunding for purchases already made.
In apps that sell consumables items (e.g. gems), from what I understand, it’s necessary to provide a server to track the gem balance for a particular user. I’m not clear on what the requirements are for the origin of that user. Is there a way to avoid creating auth flows in the mobile app and rely upon RevenueCat to coordinate the various anonymous IDs associated with the Apple ID? Can this work between app deletes and re-installs? In summary: Is there a way to track consumables (and the their balances) between app re-installs without needing to implement auth in the client. Thanks!
We have native iOS app with revenue Cat, its work perfect. Now we rewrite our app with Flutter framework. In app written with flutter we use revenueCat too and it works perfect on Android(release) and iOS(test flight). Imagine user bought subscription in native iOS app, then we realese new version app written with flutter, user install it and want to restore subscription. Now question will the subscription been restored ?
I have been looking in the documentation but didn’t see anything related to flutter for redeeming a coded!I have implemented the auto-renewable subscription with 1 month free trial in my Flutter app and have tested using Sandbox on iOS and works fine. How can I redeem an offer code using Flutter?
Hello,We have started using Revenue Cat to manage in-app purchases, but we are having trouble recovering purchases that were not made via RevenueCat on Android. We login the user via SDK using Purchases.sharedInstance.logInWith("our-custom-user-id"). We wait for a successful response and if the user is logged in for the first time, we call Purchases.sharedInstance.syncPurchases() to sync the purchases not made via RevenueCat. The problem is the "timeline" of events. See screenshot.The webhook for the purchase was sent with an anonymous user ID because an alias was not created at the time. We are unable to sync purchases on our backend with an anonymous user id. Since the "SUBSCRIBER_ALIAS" webhook is deprecated, we are unable to wait for this webhook and sync purchases after that. Please help. Do you have any solution for this?Thank you in advance for your reply.
I have an app with IAP in SwiftUI. When I showing purchase info to the user, I use ```swiftText(package.storeProduct.localizedTitle)Text(package.storeProduct.localizedDescription)Text(package.storeProduct.localizedPriceString)``` I noticed that “localizedPriceString” was changed base on the system region settings. However, “localizedTitle” and “localizedDescription” were fixed. I have localized for en-US, zh-Hans, and zh-Hant in my IAP settings. But I can only get Simplified Chinese localized strings in RevenueCat, it never showed the other two localized strings.
I am wanting to change a user’s current offering depending on how they answer certain questions in our onboarding flow (before seeing the paywall). I am able to successfully update their current offering using the REST API, but when the user reaches the paywall, the “standard” current offering is still shown, not the user’s customer current offering. I read somewhere that the current offering is cached on app launch. Is there any way to refresh this without having to restart the app?
Hello, We’re using the React Native SDK for an Android and iOS app. We have received some reports in social media from users complaining that they have been charged immediately after purchase despite the product having a 7 day free trial. We don’t have any user Ids to check in the RevenueCat dashboard yet but we’d like to understand better how free trial eligibility works in the React Native SDK. Does checkTrialOrIntroductoryPriceEligibility work on Android with the React Native SDK? I’ve seen another post from an Android native user that a different mechanism is necessary If the method returns INTRO_ELIGIBILITY_STATUS_UNKNOWN, is it safe to assume that the user is not eligible? Are false positives (is not eligible, unknown is returned) or false negatives (is eligible, unknown is returned) more likely? If a user has already consumed a free trial and they attempt to purchase a free trial product, they will be charged immediately, is this a correct assumption?Thanks in advance. Regards
Hello,I have tested subscriptions using RC and verified that the transactions appear in the Sandbox. Now I want to test purchasing In App Products from Google Play. I have set up the products in play console and configured the products and offerings in RC as well. I was able to use the RC API to make the purchase using Test Card from my app but the transactions don’t show up in the Sandbox. Is there a different place where non-subscription transactions are stored?
I have created a product in google play console, and I also created a revenuecat product with the same id, but the the following line of code returns an empty array.// Fetching all products by passing an array of their product_idconst products = await Purchases.getProducts(['product_id']);// Printing the list of products available.console.log(products); // Example response:[]Project info:Expo SDK version: 45 React native: 0.68.2 react-native-purchases: 4.6.1 Device tested: android
Hi,Before integration with RC, we had only non-consumable IAPs, now we want to release auto-renewable subscriptions with RC SDK.We added non-consumable IAPs to the entitlement with subscriptions. That seems to unlock a feature under that entitlement for customers with lifetime access.So what is the benefit of performing `syncPurchases()` for users with lifetime access since they get the access the entitlement already?
Hi there, I have a “Lifetime Pro” inapp product. After I refunded this through Google Play it is still fetched as a bought product by Revenuecat. How can I securely verify that my non-subscription product is not refunded?This function is essential for me as it would be too easy for users just to buy the lifetime product, directly refund it and enjoy the lifetime pro for free. Appreciate any help.
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.