Get help with your SDK implementation.
Recently active
Hello all,I have a question about how often I should call getCustomerInfo(). I am setting up RevenueCat in my SwiftUI application like so, based on the Magic Weather SwiftUI sample app @MainActorpublic class RevenueCatSingleton: NSObject, ObservableObject { public static let shared = RevenueCatSingleton() @Published public var customerInfo: CustomerInfo? { didSet { isUserPremium = customerInfo?.entitlements["plus"]?.isActive == true || customerInfo?.entitlements["mega"]?.isActive == true || customerInfo?.entitlements["epic"]?.isActive == true if customerInfo?.entitlements["epic"]?.isActive == true { currentUserSubscriptionLevel = .epic } else if customerInfo?.entitlements["mega"]?.isActive == true { currentUserSubscriptionLevel = .mega } else if customerInfo?.entitlements["plus"]?.isActive == true { currentUserSubscriptionLevel = .plus } } } @Published public var isUserPremium = false @Published public var currentUserSubscription
The function Purchases.getCustomerInfo() takes anywhere from 3 to 10 minutes to pull data for the first time the app is installed from TestFlight after upgrading to RevenueCat 4.25.9 ( react-native-purchases@6.6.5 ).It works as expected when installing from Xcode directly on device and using a Sandbox user. Not sure if there is an issue in production, but I’m afraid to make a release because of this. Anyone else encountering this problem?
In our test, SDK sometimes crashed. It is a bug of SDK confidently.All information in attachment.
Hey all,I recently created a Paywall for my main offering, and installed v4.26.1 via SPM. RevenueCat and RevenueCatUI dependencies installed correctly. I am using UIKit, not SwiftUI.When I follow the instructions to present an RC paywall from my view controller, the app tries to present something, but the paywall isn’t there. The view controller just gets dimmed and unresponsive. I’m connected to the internet on the test device, and I made the paywall VC an instance variable just in case it was getting garbage collected. Nothing works … any help here would be invaluable.
I have a React Native app for iOS and Android and I want to show users a yearly subscription option with a 1 week free trial:I don’t want to show different users different options I don’t want to do something different on Android vs iOS I don’t want discounts or promos So far I have:RevCat SDK installed and getting offerings My IAP created on the App Store And on the Play StoreBut I am just so so so lost. The offerings returned, as a json string, is literally 18768 characters long (without any whitespace), and nowhere in this monstrosity can I find:The actual name of my thing* properly included that I can use. ‘product.title’ is wrong. I’m working on Android first and this appends the name of the app. ‘serverDescription’ seems to not be meant for user facing use? And that’s it. hundreds and hundreds of fields...no name? This is despite the fact that I’ve inputted the name of my product in at least four different places (in Google Play, in my product display name, in my offering des
I've been working on adding Stripe Checkout to my existing app (both Android and iOS) for web checkout. Now I need to add a 'Manage Subscription' button within the app for users to easily navigate to where they can manage their subscription.I tested subscribing a user with Stripe but the managementUrl returns null. Is this the expected behavior?If so, it would be nice to make that clear in the documentation.I have a function which I call to create a Customer Portal Session for the purpose of redirecting users to manage their subscription. I'd be curious to know what is the type of link returned if there is one for the Stripe case because I thought we should be generating a Portal Session through our own backend.
Hello, I’m struggling with the RevenueCat update from 5.x to 6.4.0 on Android. I have currently a method to load the weekly subscription, however product doesn’t have subscriptionPeriod any longer. fun loadWeeklyProduct(onPackageLoaded: (Package?) -> Unit) { Purchases.sharedInstance.getOfferingsWith( { error -> // An error occurred }) { offerings -> val annualProduct = offerings.current?.availablePackages?.firstOrNull { item -> item.product.subscriptionPeriod == "P1W" } onPackageLoaded(annualProduct) }}And with this other method I would check if they still are eligible for Trial. Sadly product also no longer has any freeTrialPeriod. private fun fillTrialOrNormal(it: Package) { val hasFreeTrial = !it.product.freeTrialPeriod.isNullOrEmpty() Utilities().checkTrialUsedUp(it.product.sku, hasFreeTrial) { trialUsedUp -> var title = "" var header = "" if (trialUsedUp) { title = "
It’s pretty clear in the docs that iOS offer codes don’t function very well. I think I can handle the scenario manually in a pretty simple way. I’m thinking I’ll have a “redeem” screen in my app where a user can input a code, and that code & the app user id will get fired off in a request to a cloud function that will validate that all is correct, and then utilize the “Grant Promotional Entitlement” feature through the RevenueCat v1 API. Pros to this approach:• Allows me to have more custom scenarios (I would like to sell bulk licenses to businesses outside of app stores and their employees could redeem this way through the app, flexible free trials like 6 months free, awarding free product to influencers, etc.)• Seems like it would work a lot more reliably than the native sheet. Cons:• Reporting is a little funky since I would have a lot of folks with the ‘rc_promo’ active sku’s, so I may have to keep track of the redeemed codes in a different way as well. (Mostly) indie dev here
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.')
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.