Get help with your SDK implementation.
Recently active
The docs say: The SDK will update the cache if it's older than 5 minutes, but only if you call getCustomerInfo() However in my testing, whenever I run the below function, the requestTimeMillis remains stale, even after 5 minutes, and I’ve called `getCustomerInfo()`.I was under the impression this timestamp would change every 5 mins regardless of purchase, to reflect the getCustomerInfo request. Is that not the case?import moment from "moment";import Purchases from "react-native-purchases";async function logRequestDate() { const customerInfo = await Purchases.getCustomerInfo(); const { requestDateMillis } = customerInfo; const lastRequestDateString = moment(requestTimeMillis).format("hh:mm:ssa - DD/MM/YY"); console.log(lastRequestDateString); // eg. "08:30:05pm - 22/12/22"}logRequestDate();
Just trying to understand how this is supposed to work. No matter how many times I may call getOfferings it returns asynchronously. Even if the debug messages say that it is vending from the cache, return is async. The doc says the following with regard to the completion block: “Called immediately if offerings are cached.” Is this just wrong or is the behavior I am seeing unexpected?
We’re on the seemingly endless treadmill of missing receipts and offerings for our first iOS app store review and had a seemingly simple question that we struggled to find a good answer to.Should we remove our synced StoreKit Configuration File from our scheme before archiving to submit to the app store? Or is that file only used for xcode testing, so leaving it in the build is fine?Thanks.-nate
Background: I am sharing an entitlement across the App Store, Play Store and Stripe. Currently there is a single entitlement but I want to be able to add additional products and entitlements in the future.For my current issue:Entitlement identifier: “standard” is associated with 3 products (one on each platform)Offering identifier: “default” has one package “Monthly” which points to the same 3 productsProducts (3 of them) have unique identifiers (for example): ios_id, play_id and stripe_idSituation: A user buys a subscription in Stripe and I want to know if they have the same entitlement when I look at customerInfo in the App store or the Play store.Platform: React NativeSDK: "react-native-purchases": "^5.4.0"Issue: When I call Purchases.getOfferings(). I receive only the offerings for the platform I am on. Example on the App store the availablePackages array only contains the product I have associated with the App store: ios_id (which I would expect). With the package identifier as
We are getting Null discount from Revenuecat even though we have set up the discount in google play under offers (phase). SS of how Revenue cat is passing data. Structure we have set in Google play..In playstore the structure is like this:Subscription > Base Plan > Offer > Phase 1 ( Free trial) + Phase 2 (10/20/30% discount)
I see this question has been covered in more threads with no solutions I need help figuring this one out My AppleStore Subscription is ready for submission I am not using a sandbox account I am testing on device At this point I juts want to print my current packages Error: 2023-01-23 20:31:52.214271-0800 Recipe generator[6310:26159165] [Purchases] - ERROR: 🍎‼️ Error fetching offerings - The operation couldn’t be completed. (RevenueCat.OfferingsManager.Error error 1.)2023-01-23 20:31:52.214489-0800 Recipe generator[6310:26159165] [Purchases] - ERROR: 🍎‼️ Error fetching offerings - The operation couldn’t be completed. (RevenueCat.OfferingsManager.Error error 1.)2023-01-23 20:31:52.214532-0800 Recipe generator[6310:18871873] [Purchases] - 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
Hey, I'm using purchases_flutter dependency for a flutter app. When I'm testing to pay with iOS devices, the way to do it is by asking the user for AppleID and corresponding password. It should be working with iPhone biometrics instead. How can I do it?
Hi,import com.revenuecat.purchases.Entitlement throws Unresolved reference: Entitlement error in my Android app. The other imports are accepted.import com.android.billingclient.api.SkuDetailsimport com.revenuecat.purchases.Entitlementimport com.revenuecat.purchases.Offeringimport com.revenuecat.purchases.PurchaserInfoimport com.revenuecat.purchases.PurchasesAny suggestions?RegardsPeter
We have several products defined in the App Store. Two include a free trial, the third does not.Depending on which is offered to the user, we dynamically want to control some messaging in the app. For the product without a free trial, we specifically want to suppress anything about “try for 3 days”.Unfortunately, debugging shows that the value for package.storeProduct.introductoryDiscount?.paymentMode is erroneously freeTrial.We are using SDK 4.17.2. I have verified that the product defined in the App Store has no introductory pricing set. I have also tried to verify that the product is setup in the RC dashboard without indicating any sort of trial period for it (although it doesn’t appear that the RC setup of products even asks for that info.)Either we’ve done something incorrectly on our end, or there seems to be a bug in the SDK.Before I file a bug report, I thought I would ask here.Thank you!
Hi, I have an iOS app with RevenueCat already implemented. I recently saw that `Purchases` is being deprecated for `RevenueCat` so I went ahead and updated our Podfile from `pod Purchases` to `pod RevenueCat`. I’m able to convert a lot of the code over to the new SDK, but there are a couple things that are missing. I am no longer able to get the currency symbol (eg. “$”) from this anymore. I used to be able to do something like `pack.storeProduct.priceLocale.currencySymbol` but `priceLocale` is no longer included in the SDK. My current work around is to do something like this: `pack.storeProduct.localizedPriceString.first(where: { !$0.isNumber }).map { String($0) }` which seems much less ideal. On the `StoreTransaction` object, the old version had a `original` field that allowed me to check whether it was first transaction or if purchases were being transferred over (transaction?.original == nil). However, the new version no longer has this. Is there a way I can see whether this is a f
In the docs it says:Subscriber attributes are only synced with RevenueCat servers on app launch, app backgrounded, and when purchases are made or restored.https://www.revenuecat.com/docs/subscriber-attributes Is “App launch” meant literally or do they mean once `Purchases.configure(‘SDK_KEY’);` is called?When exactly should I call `Purchases.setAttributes({ "age" : "24", "custom_group_id" : "abc123" });` then? Before `Purchases.configure();`, or after, or does it not matter because the app has already “launched” and the attributes will only be synced later?
I want to call iOS UIKit or StoreKit functions that would bring up the “Manage my subscription” sheet.As suggested here:https://stackoverflow.com/a/51127481/166612UIKit: Use StoreKits showManageSubscriptions(in:) (Documentation).SwiftUI: Use SwiftUIs modifier manageSubscriptionsSheet(isPresented:) (Documentation).Is there a built-in way in RevenueCat (I’m using the React Native version) to bring that sheet up?Otherwise I would suggest to implement this as it would be a really useful and simple thing to introduce.Any idea?Thanks!
So I am able to see the transaction id in revenue cat but for google the order id starts with GPA.1234-5678-9012-34567 (Paid apps and in-app purchases)GPA.1234-5678-9012-34567..0 (Subscriptions)but my transaction Id looks like this "transaction_id": "momccgonamhibjgoineacklf.AO-J1OwDsqdYk6v87sEv9MLdsuQPfo0y2-UfQe1FJvRpye5QIi7MThjIZyKk_7Yzyyr6SDRxTy1PzbQUZj3hIirzCKE3I56bf0BBeRMK9qVyB-MZh7ZablM"I need the order id the format provided by google how to do that.
Hello everyone. I am facing this issue, I have connected my huawei phone to Vscode and has installed my flutter app,When i try to fetch products, it throws this error. I/flutter (26282): Instance of 'Future<dynamic>'V/AudioManager(26282): querySoundEffectsEnabled...D/[Purchases] - DEBUG(26282): ℹ️ Vending Offerings from cacheD/[Purchases] - DEBUG(26282): ℹ️ Checking if cache is stale AppInBackground false does anyone know why is that, what am i missing?
I would like to have different buttons depending on the type of subscription (monthly, yearly) to be able to customize them individually. For the moment my setup works with a For Each (as below) and therefore does not allow me to distinguish between the different products by varying the design of the buttons. ForEach(currentOffering!.availablePackages) { pkg in Button { // BUY Purchases.shared.purchase(package: pkg) { (transaction, customerInfo, error, userCancelled) in if customerInfo?.entitlements.all["pro"]?.isActive == true { // Unlock that great "pro" content userViewModel.isSubscriptionActive = true } } } label: { Text("\(pkg.storeProduct.subscriptionPeriod!.periodTitle) \(pkg.storeProduct.localizedPriceString)") }
Hello.How can I access the "product ID" of the purchased product when the user makes a purchase? I want to add as many keys as product purchased with firebase using this product id.Eg:Product ID = ak_20_key -> I will add 20 keys to Firebase.Product ID = ak_10_key-> I will add 10 keys to Firebase.
I’m trying to use the syncPurchases method in the Flutter SDK before checking entitlements to determine free trial eligibility on Android.This workaround was suggested by Cody in the thread here: However, despite the function returning a future, await Purchases.syncPurchases() doesn’t seem to actually await the purchases being synced. Looking at the Purchases package (see below), it doesn’t seem to await the method being invoked. /// This method will send all the purchases to the RevenueCat backend. /// /// **WARNING**: Call this when using your own implementation of in-app /// purchases. /// /// This method should be called anytime a sync is needed, like after a /// successful purchase. static Future<void> syncPurchases() => _channel.invokeMethod('syncPurchases');Is this a bug, or is it not possible to await the purchases being synced?
I am currently working on a Flutter web application that utilizes the Firestore ID and I am experiencing difficulty in retrieving the user's status. The code I posted below works when I paste in the userID string. But, its throwing various errors when I am retrieving it from firebase. Are there any suggestions or recommendations on how to fix the errors I am facing?ChromeProxyService: Failed to evaluate expression 'xhr.onError.first.then': InternalError: Expression evaluation in async frames is not supported. No frame with index 14.. var userID = await DatabaseService().getUid(); // loginWeb(userID);Future<http.Response> fetchPost(userID) { var url = "https://api.revenuecat.com/v1/subscribers/$userID"; var headers = {"accept": "application/json", "X-Platform": "ios", "Content-Type": "application/json", "Authorization": "Bearer **************"}; var response = http.get(Uri.parse(url), headers: headers); return response;}loginWeb(userID) { try { fetchPost(userID).t
Changing the Project Name from Version15 to Version16 results in the following errors, any ideas or this just a Swift bug of some sort? Thanks, John
Helllo, I’ve created a new offer for the existing subscription product, and marked that as “Upgrade”, so that users that already had subscriptions can use this if needed. (See picture) And this seems like it is not being able to be marked as “Backwards compatible” which means RC is not supporting it. Same case for “Developer Determinted” eligibility criteria. Only “New Customer Acquisition” actually works for RC…. can you please help here?
Hello on my android app am getting an error when I try to do a purchase.The weird thing is I am able to retrieve.the product and actually buy a subscription.But the purchase callback always returns the error below(I am using sdk 4.6.1)**NOTE I have already made sure that I have configured the right package name on the revenue cat dashboardError: PurchasesError(code=ConfigurationError, underlyingErrorMessage=Invalid Google Play package. Check your app settings in RevenueCat match Google Play., message='There is an issue with your configuration. Check the underlying error for more details.')
Hello on my android app am getting an error when I try to do a purchase. The weird thing is I am able to retrieve the product/offers and actually buy a subscription which is showing active in play store app and also got receipt on email. But the purchase callback always returns the error below(I am using sdk 5.4.0) **NOTE I have already made sure that I have configured the right package name on the revenue cat dashboardPurchases.sharedInstance.purchaseProduct(activity,product,object:PurchaseCallback{ override fun onCompleted( storeTransaction: StoreTransaction, customerInfo: CustomerInfo ) { } override fun onError(error: PurchasesError, userCancelled: Boolean) { }})Error: PurchasesError(code=ConfigurationError, underlyingErrorMessage=Invalid Google Play package. Check your app settings in RevenueCat match Google Play., message='There is an issue with your configuration. Check the underlying error for more details.')
Hi guys,I built my RevenueCat integration using the react-native-purchases plugin for an expo EAS build.All APIs work fine and I can fetch and purchase products successfully.But there’s a problem with turning off sandbox mode.When I click to purchase a product, play store opens the payment modal in test mode.I never activated sandbox mode, so I am confused why playstore activates test mode.
HiIs there a way to see in Dart library that the offering is for families? I want to auto-generate text in paywall 2 tabs one for family second for average. I know that there is a flag to see if entitlement is for the family but is there one for packages?Thanks
I have sent my app to Apple review, they accepted the macOS version of the app, and rejected the iOS version. So I tried the subscription again within Xcode, and actually, it's running successfully with the macOS, while it is not on iOS (Simulator). The code to do the purchasing for macOS and iOS is nearly the same.Please see attached:Apple reviewScreenshot of their testScreenshot of my test (Xcode log)
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.