Get help with your SDK implementation.
Recently active
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)
At WWDC 22, Apple released a session video about proactive in-app purchase restore. From what I understand, this is a way for an app to automatically restore a user’s purchase (e.g. after a re-installation) without them having to use a “Restore Purchases” button.I’m not sure if this is new or if this was supported all along, so my question is: Does the RevenueCat iOS SDK have support for this? I already found the syncPurchases function but I’m not sure whether it is the right API for the task.
In our testing, we tried a sandbox PurchaseProduct on Android that resulted in a code 10 network error:"message": "Error performing request.","context": "PurchaseProduct","underlyingErrorMessage": "Hostname api.revenuecat.com not verified:\n certificate: sha1/3LiOs5Y962AdAv8grdgm7+0i67g=\n DN: CN=*.gci-mckinsey.com\n subjectAltNames: [*.gci-mckinsey.com]","readableErrorCode": "NetworkError","code": 10 The tester then attempted to purchase the same subscription and got a code 6 (ITEM_ALREADY_OWNED). Because of this, our app triggered a SyncPurchase, resulting in a subscribed status for the user after a few seconds. However, a email was promptly sent to our tester by GooglePlay about the subscription being cancelled as in that scenario, no acknowledgement had apparently been sent by Revenue Cat. So apart from the network issue, the concern for us is that recovered transactions are not acknowledged by the API. If it can help debug, the UserID is DBE441C2AD27727E To try to mitigat
I'm using v4.16.0 and when I try subscribing to auto-renewal purchase I get this error:The subscriber has reached the max number of apple receipts allowed. At the moment the app is already live and this is critical.I really appreciate your time and help.
Hi,I would like to integrate payments among users depending on products they offer other users. I already implemented subscription on Revenuecat. However, I couldnt have found a sample or article for managing payments among users of the application. Is it possible to integrate such a feature through Revenuecat?
Hi, Not directly related to RC, do you know if it is possible to have multiple introductory offers per subscription? For example see below, I created 2 intro offers, both are free-trial but with different durations, some users I would like to give the free-week and for the others the free-3-days.Assume that both offers are valid on all countries (for testing I just enabled in 2).I am not sure how to do it using the RC SDK hence I am not sure it’s even possible, on Apple website I see they write that an Introductory Offer limit is “One offer per subscription, per territory”, so I guess it’s impossible but just wanted to be sure…Thx.
Specifically for Google Play:Can we see if the user has paused the subscription? Can we pause the subscription via the SDK (or send the user the right place to do so)?
Hi,We’re going to add introuctory offers to some products in our iOS app. And we want to make sure we display the right choise for each user depending on their receipts. So it looks like we could achieve this by using checkTrialOrIntroductoryPriceEligibility. However, because it could result into refreshing user’s receipt, the AppStore sign-in dialog may appear. As I see from the current logic in the SDK it happens only when the receipt is missing in the app bundle. Which shouldn’t be the case for AppStore build. Though it’s a usual case for development and sandbox builds. Particularly the dialog appears if I try to call this method when there’s no sandbox user logged into device AppStore.Thus we have a concern about prompting AppStore sign-in dialog unexpectedly in the process of Apple review causing a rejection. Mainly this post is the source of my concerns. And also this recommendation from Apple: The application can advise the user that the appStoreReceipt appears to be outdated a
I am very new to Revenuecat so I may have missed something. Consider the following: SituationSuppose a user is currently using premium version A. Suppose it has decided to downgrade to premium version B - in the same Subscription group, and thus ‘purchased’ version B via the app, using the RevenueCat SDK. The downgrade will only become active when the current period of version A expires. In the RevenueCat dashboard I see the event: Changed their renewal preference to ‘Premium version B’. ComplicationAfter ‘purchasing’ version B nothing seems to change to the customerInfo object indicating that a downgrade to version B is expected to come. QuestionI’d like to inform the user that their renewal preference is changed to Premium version B, how can I achieve this if nothing of this kind is available in the customerInfo object? Additional infoI am currently testing only with purchases in the app store.
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.