Get help with your SDK implementation.
Recently active
Swiftui / Xcode 15.4 / iOS 17.5.1When using the .presentPaywallIfNeeded modifier, I and not seeing any of the restore completion handlers called when that function is tapped. This includes restoreStarted, restoreCompleted or restoreFailed. The other completion handlers to include those around purchases and the onDismiss do fire correctly.In my case, I don’t have a subscription to restore. When restore is invoked “DEBUG: Restored purchases successfully with no subscriptions” is returned to the console. However, there is no alert shown to the user. Whether it should be from RevCat or not is another question. However, looking to use the completion handlers to provide our own alert is not possible due to the completion handlers not functioning around restore.The modifier is below., .presentPaywallIfNeeded( requiredEntitlementIdentifier: K.entitlementID, offering: nil, fonts: DefaultPaywallFontProvider(),
I’m using Unity3D 2021.3.27f1 and Revenue Cat Unity SDK 4.16.0 (also tried with 5.0.0-alpha.1). I have simple empty scene with single object called Revenue Cat with two components. 1st is the Purchases component and second is the implementation of Purchases.UpdatedCustomerInfoListener that I called RevenueCatListener. It’s just copy paste from SDK installation instructions on official docs.The problem is that on Start i’m getting two null references: 1st one when code reachs SetLogLevel function invoke and second when I try to fetch products. I debug it and found that _wrapper that created in Purchases component is null during thins invocations. And this is very logical, because bwrapper created at Start and SetLogLevel \ FetchProducts (Offers) in docs example are at Start. So because Unity Start invocation order isn't guaranteed by default, we have wrong invocation order and null references. My question is how it’s possible that there is SUCH big problem in default examples of SDK? M
I’m using the `await Purchases.shared.checkTrialOrIntroDiscountEligibility(product:)` method to check if a user is eligible for the intro offer of a product. I noticed that while the result of this method seems to be cached between calls, the cached values do not persist across app launches. This is problematic for us because we need to check intro discount eligibility on app launch, and this significantly slows down or app launch times. Since this value should rarely change, is there a way to tell the SDK to do more aggressive caching?
When a user has bought my product from the iOS app, when I try to restore the purchase on the companion Apple Watch app, it does not seem to get it right. I am facing the same issue as this other topic. If using a StoreKit file, there is no error but the entitlement obtained in the iOS app is not retrieved. When I am not using a StoreKit file, the Watch keeps asking to login into my Apple ID (which I'm already logged in) How is this flow supposed to work? Thanks in advance 😻
Opening file failedOpening file C:/ProjectName/Library/PackageCache/com.revenuecat. purchases- unity@5.3.0/Scripts/VerificationResult.cs.meta Cant find .meta file. What i need to do? I update revenuecat in my project
By reading the docs of Displaying Paywalls, it seems like Paywall Dialog is only available when using compose. Is there any non compose way of displaying it?Thanks.
When running my app, I show a paywall as activation for the app (similar to Netflix). Right when the app launches, on Thread 1, the app gives an EXC_BAD_ACCESS and the app terminates.This error happens in the core RevenueCat package, in RevenueCat > Sources > Paywalls > PaywallData.swiftUnder “extension PaywallData” in “public struct Configuration”, the exception is called on line 224 (line 3 in this codeblock):/// If set, the paywall will display a terms of service link.public var termsOfServiceURL: URL? { get { self._termsOfServiceURL } set { self._termsOfServiceURL = newValue }}The full error is: Thread 1: EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff8)This is my console logs:10.27.0 - [GoogleUtilities/AppDelegateSwizzler][I-SWZ001014] App Delegate does not conform to UIApplicationDelegate protocol.DEBUG: ℹ️ Configuring SDK using RevenueCat's UserDefaults suite.DEBUG: 👤 Identifying App User IDDEBUG: ℹ️ Debug logging enabledDEBUG: ℹ️ SDK Version - 4.43.0DEBUG: ℹ️
A succeed purchase is complete, but when I re-launch the app again, the paywall page is displayed again. How to avoid it, meaning to check if a user already purchased before then if yes not pop up the paywall.``` .sheet(isPresented: $showPaywall) { MyPaywallView() }``` ```import SwiftUIimport RevenueCatimport RevenueCatUI struct MyPaywallView: View { var body: some View { PaywallView() }} #Preview { MyPaywallView()}```
Hello,i've found an issue in revenuecat API that i want report in order to have the possibility of get a bug bounty.i've search your company on HackerOne but didn't found it. how can i report that?thanks.
I am facing problems in the latest version of iOS.Xcode version: Version 14.2 (14C18)POD Target: 11.0 [!] CocoaPods could not find compatible versions for pod "PurchasesHybridCommon": In Podfile: purchases_flutter (from `.symlinks/plugins/purchases_flutter/ios`) was resolved to 4.10.0, which depends on PurchasesHybridCommon (= 4.13.1)None of your spec sources contain a spec satisfying the dependency: `PurchasesHybridCommon (= 4.13.1)`.You have either: * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`. * mistyped the name or version. * not added the source repo that hosts the Podspec to your Podfile. flutter doctorDoctor summary (to see all details, run flutter doctor -v):[✓] Flutter (Channel stable, 3.7.0, on macOS 13.1 22C65 darwin-arm64, locale tr-TR)[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)[✓] Xcode - develop for iOS and macOS (Xcode 14.2)[✓] Chrome - develop for the web[✓] Andro
I am using the revenuecat paywalls. I feel this is an error that should be fairly well known? But Under certain circumstances I have not been able to confirm which. A free trial maybe available to users, and maybe displayed correctly as such, but then when the user tries to purchase package, the introductory offer is not available?(I have tested this with every device I have, and attempting to ask international friends. but All the time it is just as expected. Free trial → Free Trial. But for the Google Play tester in India mostly India this occurs… I thought it was because of the override India has for prices over 5000 rupees, so I brought the price down to that and confirmed in the play console that the override wasnt occuring but the error still occurs for India tester(s)? I have no idea if its a bug in revenuecat integration or more likely a bug in the google side? (Am I doing something wrong?) Again everywhere but during the review tests does this bug appears…
I have followed all the steps for integration with react native to fetch subscription from google play. However the getOfferings method always returns the following{"current":null,"all":{}}Would appreciate some help. P.S. I have created subscription in Google Play Store and Revenuecat both
My app has two modes, offline and online. The offline mode (which doesn’t require users to log in) offers users a non-consumable, while the online mode (which requires users to log in) offers subscriptions. RevenueCat handles the subscriptions part well. However, for the non-consumable part it’s a bit confusing. I’ve read multiple posts here and saying that RC will always CONSUME the products. However, Google’s Billing Library offers two ways to handle non-subscriptions products, one is to acknowledge, another way is to consume (https://developer.android.com/google/play/billing/integrate#non-consumable-products and https://developer.android.com/google/play/billing/integrate#consumable-products). By calling ` BillingClient.acknowledgePurchase()`, it ensures that it’s treated as non-consumable so that when user tries to purchase this again, Google Play will prompt an error saying “You’ve already owned this item”. By calling `BillingClient.consumeAsync`, it will therefore be treated as
I seem to be getting an incorrect value for my free trial billingPeriod on Android.I thought it would be good to ask here whether I’m understanding this correctly and/or whether to open an issue on GitrHub.I’ve set the trial period to 90 days in the Play Console, but in the returned package I’m getting 86 days. Looking at the iso8601 value, 84 days corresponds to 12 weeks so it looks like it’s ignoring the 6D. I’ve just learned that iso8601-1 doesn’t allow any other values if W(eeks) is specified but iso8601-2 does. It seems like, although P12W6D is correct (84 days + 6 days = 90 days) the ‘value’ field is showing an iso8601-1 interpretation (84 days only) rather than iso8601-2.Could this be a bug?
I have setup the code for magic weather sample app provided by revenue cat, for Flutter.I followed the whole guide, creating the service account, adding license tester etc, providing all the required permissions in google play console to service account email etc.And the app is working fine in debug mode, even if I create a release apk and install it in my physical device, it works fine.But when I uploaded the aab on google play console, and downloaded it into my physical device, my offerings are not loading. The indicator just keeps loading and loading.I have tried internal testing and closed testing. Initially I was trying it in internal testing only, as I didn’t have to provide icon, description, screenshot etc for that, so it was easy, but when it didn’t work, I tried closed testing, but it still didn’t work. I didn’t submit the app for review, completed rest of the steps, and downloaded app using the link.
Hello, I use the revenuecat library to remove ads in my game (non-consumable) and buy coins (consumable). I don't use login, I make purchases anonymously.- Remove ads (cannot be consumed) When I buy, I check whether the purchase has been made by checking customer info -> entitlements. Is this method correct?- When I cancel/return my purchase to remove ads (which cannot be consumed), this situation is reflected very late in customer info -> entitlements. Is it because it is a test?- When I canceled/returned my purchase of removing ads (which is not consumable), I noticed that when I removed all offers (both non-consumable and consumable) with getOfferings, the product to remove ads (which is not consumable) did not arrive. Is it because of this test?- I check the Coin I purchased (consumable) in customer info -> entitlements and confirm my purchase. Is this method correct?- Where can I track this situation when I cancel/return my purchase of Coins (consumables)? Should I take b
I have this message on the Google Play dashboard Action required: Migrate to supported version of Google Play Billing LibraryWe are introducing changes to the lifecycle of Play Billing Library and its associated deprecation timelines. Because you currently use an older version of the library, we wanted you to be aware of new key dates you’ll need to adhere to:By Aug 31, 2024, all new apps and updates to existing apps must use Billing Library version 6 or newer. If you need more time to update your app, you will be able to request an extension until Nov 1, 2024.I am currently using "react-native-purchases": "^6.6.5", If I upgrade to the latest version would this be compatible with Billing Library version 6? Thank you for your assistance
Hi! Thrilled for the new Web SDK even in Beta! Thanks.Regular checkout working in my test environment just fine. Google Pay gets to the screen like this: but there is an error in the console like this:Unable to download payment manifest "https://www.google.com/pay". Then the next screen continues with this error pay.js:181 Unsafe attempt to initiate navigation for frame with origin 'https://mydoman' from frame with URL 'https://js.stripe.com/v3/payment-request-inner-google-pay-792b02288231e9fd1…2Fsettings%2Fmypage&controllerId=__privateStripeController8321'. The frame attempting navigation of the top-level window is sandboxed, but the flag of 'allow-top-navigation' or 'allow-top-navigation-by-user-activation' is not set.Any ideas? Wb @
I have a Flutter app using last version of RevenueCat libs (purchases_flutter and purchases_ui_flutter, both at 6.29.2). The Purchases instance is configured during app initialization:Future<void> setupRevenueCatSDK() async { await Purchases.setLogLevel(LogLevel.debug); late PurchasesConfiguration configuration; if (Platform.isAndroid) { configuration = PurchasesConfiguration("XXX"); } else if (Platform.isIOS) { configuration = PurchasesConfiguration("XXX"); } await Purchases.configure(configuration); logger.d("RevenueCat / Purchases configured ${configuration.appUserID}");}void main() async { WidgetsFlutterBinding.ensureInitialized(); // ... await setupRevenueCatSDK(); // ... runApp} Then I call the UI lib to open the Paywall, after the user taps a button.response = await RevenueCatUI.presentPaywall() This flow works well for all devices I could test (both iOS and Android) and I had many multiple transactions from other users. Still, I'm seeing dozens of multipl
Description:According to the RevenueCat documentation, attributes are supposed to be synced with RevenueCat servers when Purchases.configure() is called, the app is backgrounded, and when purchases are made or restored. However, in our Flutter app, we are encountering issues with attribute syncing and configuration: Syncing on Configuration and App Backgrounding: We've noticed that attributes are not being synced with RevenueCat servers when Purchases.configure() is called or when the app is backgrounded. Despite following the documentation, attributes are only synced when purchases or restores are made. syncAttributesAndOfferingsIfNeeded() Method Unavailable in Flutter SDK: The documentation mentions using the syncAttributesAndOfferingsIfNeeded() method for ensuring immediate syncing of custom attributes. However, this method seems to be available only for Android and Swift native code and is not accessible in the Flutter SDK. Issue with Existing Customers: We need to set attribut
When I try to upgrade a subscription using `Purchases.purchasePackage(package)`, it doesnt work. The new `CustomerInfo` still has the old active entitlement. Restarting the app, restoring purchases do not work. There are no errors either, it shows that the purchase was successful. When I try to subscribe again, it says `This product is already active for the user.`. This does not happen on Android, only iOS.
Scenario DescriptionI am using the "Keep with original App User ID" feature as it suits my requirements. Here are the steps I followed in a sandbox environment:User A purchased a monthly subscription using Apple account X. After a successful purchase, User A logged off. User B then attempted to purchase a yearly subscription using the same Apple account X.After the payment was charged to User B, RevenueCat threw the error: RECEIPT_ALREADY_IN_USE.QuestionHow can I restrict the user from making a payment if the subscription is already linked to another user, thereby preventing the payment charge before it occurs?
I need a Hard Paywall with React Native. The close button causes a lot of problems.One solution is to create a button that says “Next” that will launch the Paywall if needed.This some what works, but the user is still allowed to close the paywall after they pay, and while its still processing the payment which takes up to 15 seconds. Then the flow is completely mixed up. I don’t get any feedback until the payment has completed and changed their entitlement. Is there any solution for this?
I am trying to use Purchases in an expo project.If I build with xcode, everything is fine. However, we rely on the expo development build during development. Because ain’t nobody got time for xcode. If I try to run with the expo dev server (npx expo run:ios) then I get the error ERROR Invariant Violation: `new NativeEventEmitter()` requires a non-null argument., js engine: hermes this happens at the time of import of Purchases (import Purchases from “react-native-purchases”).I followed the standard installation and usage for expo.It looks like this might be some sort of incompatibility with NativeViewGestureHandler because that also starts generating errors only when I try to import Purchases.Note that I know that purchases probably won’t work in this mode, at least on the simulator, but it shouldn’t crash the app. That makes for some really challenging dx.
I integrated the library successfully for iOS and wanted to also do the same with Android. However, when I upload my build to the play console, I get the following error:"We have found that at least one of the app bundles included in this release uses the following Play Billing Library versions:AIDLThese versions of Google Play Billing are no longer supported. Upgrade to a supported version to publish this app. More information" (translated)I have checked the dependencies, only v 6.0.2 appearsI added this line to the manifest “<uses-permission android:name="com.android.vending.BILLING"/>”, other than that I didn’t add anything else.
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.