Get help with your SDK implementation.
Recently active
Hey,I see that Purchases.purchaseProduct(); is Deprecated and it suggests to use purchaseStoreProduct instead. but purchaseStoreProduct doesn’t accept string like purchaseProduct so what should be instead if I want to purchase a IAP consumable/non-consumable product and not subscription.
Hey guys,trying to integrate RevenueCat in app purchases(not subscriptions!) and this syntex doesn’t seem to work. it doesn’t even recognize purchaser Info. any help?
Have a flutter app leveraging purchases_flutter-4.10.0 but am getting this error as I attempt to load the .bundle for testing into the Google Play Console: ErrorWe've detected that one or more of the app bundles included in this release are using the following Play Billing Library versions4.1.0These are unsupported versions of Google Play Billing. Upgrade to a supported version to publish this app.Thoughts on how to overcome this error message? Is there an version of the SDK that uses a more current Play Billing Library?
I’ve got RevenueCat and SuperWall integrated into an older app and I can’t seem to get any of the method callbacks to work without setting observerMode to true on RevenueCat. I’m not handling my own purchases and I want RC to do it for me, so I don’t think that is the right setting… but ti does seem to work and unlock the app in sandbox mode when I do it that way. My SuperWall has a paywallDelegate configured for it where we hand the purchases over to RevenueCat. In that delegate I call the following method on Purchases.shared:func purchase(product: StoreProduct, completion: @escaping PurchaseCompletedBlock)For some reason when observerMode is false the PurchaseCompletionBlock just never get’s called. Not even with an error or nil value… When I turn observerMode to true everything works as expected but I’m confused why that should be. Am I reading the documentation wrong? Is there something going on with my SuperWall configuration where it’s somehow making the purchase?I’ve used the sa
As Xcode 15/iOS 17 deployment is nearing, I have began looking at the new PrivacyInfo.xcprivacy / Privacy manifest stuff that will be mandated next year.Having seen the latest commits in GitHub, I realise that NSPrivacyCollectedDataTypeLinked of PrivacyInfo.xcprivacy for NSPrivacyCollectedDataTypePurchaseHistory is set to true. (https://github.com/RevenueCat/purchases-ios/blob/7087218ed675e828fd1f97b5c25d4e1ef1609392/Sources/PrivacyInfo.xcprivacy#L21-L22)However, if we look at https://www.revenuecat.com/docs/apple-app-privacy#2-purchase-history-linked-to-identity, the previous advice on this topic, when we need to fill the privacy labels for the App Store, Purchase History Linked to Identity does not apply to those using anonymous user ids only. In that case, provided that if a developer only made use of the anonymous user ids, wouldn’t the Privacy Manifest be somewhat inaccurate? (though, I have no idea on how one could avoid this, either.)
Our app has been rejected by Apple because the payment process is very slow. Payment sheet takes about 5 seconds to load and then an additional 4 to 5 seconds to complete payment. We are using sandbox for testing and the package version purchases_flutter: ^4.11.2We simply use the following line to purchase a product. await Purchases.purchaseProduct(‘productid’)The configuration is all correct and payment goes through. It’s just sooo slow.I would expect the payment sheet to show up pretty quickly. IAP products have been defined in the App Store as consumable products and in revenuecat as well.Are we missing something? Is this a known issue with this package?Thank you
This may be more of a support question, but for some reason I am no longer fetching the title for one of the two subscriptions available in my Flutter app, and only on iOS - Android works fine.I have two subscriptions available for a game - one that allows unlimited play time (energy), and a second that allows unlimited chips (which are used for hints and other things that are not necessary for play). The subscription for Chips retrieves all information correctly, but the info for Energy is missing the title. Immediately after getOfferings:final offerings = await Purchases.getOfferings();return offerings.all;The offerings.all has the following (from the VSCode watch window) running on an iOS Sim:As I understand it, the product titles are taken from the App Store settings for the subscription item, specifically, the “Reference Name” (which is the only place where the “Unlimited Chips - monthly” string is set, and is set similarly for Energy. In fact, it isn’t possible to have a subscr
Hi RevCat Team, I have added some new subscription in Apple connect and added them in RevCat, But sometime I can’t fetch the new subscription when I invoke @objc(getProductsWithIdentifiers:completion:) in your SDK, I have tried to add product ids for new subscription and one old subscription, API is return old subscription successful, It’s don’t return the new subscription, Please help check it.Thanks.This is the log: 2023-09-21 13:25:25.032107+0800 Hobnob-Staging[4554:789536] [offering] DEBUG: ℹ️ Skipping products request for these products because they were already cached: ["staging_sub_premium_2_yearly"]2023-09-21 13:25:25.032209+0800 Hobnob-Staging[4554:789536] [store_kit] DEBUG: ℹ️ No existing products cached, starting store products request for: ["staging_sub_invitation_maker_monthly", "staging_sub_party_host_annual", "staging_sub_party_host_monthly", "staging_sub_invitation_maker_annual"]2023-09-21 13:25:25.138735+0800 Hobnob-Staging[4554:789811] [store_kit] DEBUG: 😻 Sto
Hi, by configurating revenuecat I need to trigger following code: configuration = PurchasesConfiguration(googleApiKey) ..appUserID = userId ..observerMode = false; I have no experience and no idea if this google-api-key is important or should be privacy, should I hardcode this googleApiKey in my flutter app, or I need to get this from google secret manager via cloud function? But if I get this from cloud function, there is no chance for hacker to get this apikey?thanks!
Hi,I’m using purchases_flutter(5.4.0). I’ve set up the entitlements, offerings, products as well as packages as guided in https://docs.revenuecat.com/docs/ios-products. I can get the offerrings and display the packages correctly. But when I make a call to `Purchases.purchasePackage()` to purchase a package, the call just hangs and doesn’t return at all. Android works without any problems. I tried it with sandbox and real icloud accounts, the result is still the same..The problem is only on IOS. It has been working flawlessly for about 40 days, with over 300 subscription purchases made, but for the past 3-4 days, I've been encountering this problem. When I check the RevenueCat dashboard, I can see the purchases, but there is no response from the 'purchasePackage' method in the app. I also tried upgrading the Purchases_flutter library to version 5.6.5 with the same result. You can see that the purchase is successfully made in the logs. I have also looked into other topics experiencing th
I’m unable to fetch offerings.The command:Purchases.getOfferings()Returns this error:underlyingErrorMessage: There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store.I’ve followed the tutorials around, and all was working fine until I’ve upgraded my “react-native-purchases” package to version 5.0.2.I’ve got an app in production with package version 4.5.2, and it works simply fine. The offering shows up, and the purchase gets completed.Although when I run it with the 5.0.2 I’ve got no products.In the upgrade process I’ve changes the authentication process to the new one:Purchases.configure({ apiKey: pubKey, appUserID: null, observerMode: false, useAmazon: false });
I recently updated my apps to use the latest version (6.9.4 - android java) and I am getting the following warning in my Google Play console. Is there anything else I should have done that I forgot?You're using the InAppProduct API to manage subscriptions, which is now deprecated and will stop being supported for new apps in January 2024, and for all apps in May 2024. Start using the new Subscriptions API to get new features including multiple base plans and offers, as well as prepaid plans. App: Android (Java)Revenuecat version: 6.9.3
I want to give my subscribed users a way to restore their subscription from the underlying store without using the “user id”. the reason why I want this is that some users use another login method than the original one they used when they subscribed. This gives the user account a different id, therefore they cant find their subscription. we got a lot of customer support tickets because of this problem, So I was wondering if there is a way to restore the subscription directly from Google Play or App Store without any user id?
We use RevenueCat so that our own backend is the source of truth for user status information. We offer consumable IAPs.After we make purchases via the RevenueCat SDK, we communicate with our backend to get the updated user status.When I make a purchase on iOS and kill the app when the StoreKit transaction has completed but before RevenueCat has processed the transaction, I run into the scenario that the RevenueCat SDK will process the transaction on the next launch.I see in the logs that the transaction is successfully processed by RevenueCat. But `PurchaseController.purchases(_:receivedUpdated:)` is not called afterwards.I assume the delegate would be called in case of subscription IAPs, but how can I get notified for consumable IAPs?
I’m migrating iap other SDK to Revenuekit.i know that there is no way to check refund status of consumable purchase. but in non-cosumable case, which user can purchase only one time, func getRefundCheck() { Purchases.shared.restorePurchases { customerInfo, error in if error == nil { if self.isPremiumActive { if customerInfo?.entitlements["Premium"]?.isActive == false { self.isPremiumActive = false } } } }Is this the right function for me to find refund users?
Hello Team,RevenueCat portal is showing Could not validate subscriptions API permissions. Status is the same after 48 hours. I followed all the steps mentioned here Google Play Store (revenuecat.com). Can someone help how to resolve this issue?
My subscription flow was working, and it's been a month since I received the 'Something went wrong' error. I have two published apps, and both of them are encountering this error simultaneously. I've tried many solutions, but none of them worked.purchases_flutter: ^5.6.5 error log:Activity finished with resultCode 0 and billing's responseCode: 3E/[Purchases] - ERROR(26164): BillingWrapper purchases failed to update: DebugMessage: . ErrorCode: BILLING_UNAVAILABLE.nullE/[Purchases] - ERROR(26164): PurchasesError(code=PurchaseNotAllowedError, underlyingErrorMessage=Error updating purchases. DebugMessage: . ErrorCode: BILLING_UNAVAILABLE., message='The device or user is not allowed to make the purchase.')
I am trying to add Revenue Cat to my application and I am getting an unexpected behaviour. await Purchases.getOfferings(); never finishes. It hangs. try { console.log('This logs') const offerings = await Purchases.getOfferings(); console.log('This does not log');if (offerings.current !== null) { ….}} catch (error) { new Error(`Error getting offerings from Revenue Cat ${error}`);} I am unsure why this happens. This are the logs 2023-09-12 15:06:48.379841+0200 someApp[4687:37716] [configure] INFO: ℹ️ Purchases instance already set. Did you mean to configure two Purchases objects?2023-09-12 15:06:48.380048+0200 someApp[4687:37716] [configure] DEBUG: ℹ️ Configuring SDK using RevenueCat's UserDefaults suite.2023-09-12 15:06:48.380078+0200 someApp[4687:53865] Opened database at /Users/john/Library/Developer/CoreSimulator/Devices/3B433335-5FEA-4324-BCD4-4CBB677C5A4E/data/Containers/Data/Application/F8725A65-E28B-4E6B-BAE0-E0058C257495/Documents/foo.db2023-09-12 15:06:48.
A few hours ago, the data when getting the returned package list was missing title and description{"identifier":"$rc_weekly", "offeringIdentifier":"Default", "packageType":"WEEKLY", "product":{ "currencyCode":"USD", "description":"", "discounts":{ }, "identifier":"dsports.weekly", "introPrice":null, "price":6.99, "priceString":"$6.99", "productCategory":"SUBSCRIPTION", "productType":"NON_CONSUMABLE", "subscriptionPeriod":"P1W", "title":"" }}
Hi,When I set the availability of my Subscription to 1 country, can I assume that this:try await Purchases.shared.offerings().current?.availablePackageswill return an empty array/error with other storefronts?Cannot really test it via TestFlight, as it seems to discard the region completely.
I am working on a macOS desktop application using SwiftUI and am looking for a way to implement a trial version that expires after a specific period (e.g., 7 days). Additionally, I want to include the functionality to activate and deactivate a software license.Requirements:When the user first installs the app, they should be able to use it for a 7-day trial period. After the trial period, the user should be prompted to enter a software license key to continue using the app. The user should have the option to deactivate the license on their machine, so it can be used on a different machine. I understand that this will likely involve both client-side and server-side logic. However, I am particularly interested in how to achieve this in SwiftUI for the client-side aspect.I look for a basic example that implements this preferrable integration. The payment can be on a website doesent have to be in app purchase but would be positive of this is possible optional lateron.Im looking for advice
Hello, I’m trying to import the enum PERIOD_UNIT from the package in a Ionic App but it’s always undefined. import Purchases, { PACKAGE_TYPE, PERIOD_UNIT, Period, PurchasesOfferings } from 'cordova-plugin-purchases/www/plugin';Yet, no problem with PACKAGE_TYPE or some other. An idea why ?
HelloI need help debugging furtherI’m trying to get more error details for the fallowing error“[Error: There was a problem with the store.]”I found the fallowing article It explains how to find the issue by looking at the error typehowever I’m not getting any additional error details other than What I showed above.When I fallow the suggested error handling linkhttps://www.revenuecat.com/docs/errors#android-errorsand I try to handle the `onError` promise, It simply tells me that `onError` is not define in the promise4 issue types are suggested to look intoGoogle server is down I doubt this is the issue if I’m periodically trying this since yesterday Google Play Developer API Quota exceeded Don’t think its this since I just made this google play account Invalid Android package name in the RevenueCat dashboard I don’t know how to verify this othern than looking at the build.gradle Google Billing Client SERVICE_TIMEOUT error I can’t verify this since I’m not able to look at any erro
I want to highlight the current plan(product) on the pricing table by mapping these two:customerInfo.getActiveSubscriptions() offerings.getCurrent().getAvailablePackages() but what I found is that there is no any unikey from them. here is what i got:customerInfo.getActiveSubscriptions() → ["pro_plus:monthly"] offerings.getCurrent().getAvailablePackages() → { "productId":"pro", "basePlanId":"monthly"}is that mean i need to combind the key "productId”+”:”+"basePlanId" by myself?or any better way to do that? this is the sdk question using java in android.
i am using Revenuecat to let users subscribe to plans in both iOS and android. Few questionsShould we perform sales tax calculations? or is it already part of playstore, app store subscriptions?
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.