Get help with your SDK implementation.
Recently active
My paywall has three options:1. Weekly subscription, auto renew2. Monthly subscription, auto renew3. 24 hour “battlepass” (pro features for only 24 hours), one time consumableIn Apple and Google I’ve modeled the battlepass as in app consumables because there is no way to create a 1 day non-renewing subscription (iirc Apple just didn’t provide that as an option).So, my question is, what is the cleanest way to implement this? Right now I’m planning on just having a second “battlepass” entitlement. Then, clientside, I check if the user has the entitlement, and, if so, how much time has elapsed since the purchase time.
Hello, I was wondering if RevenueCat has the Paywall feature’s React Native SDK? I couldn’t see it on the documentation.
I'm using the latest purchases_flutter: ^6.5.0. All setup is done for Android, Apple consoles, and RevenueCat console, and the testing account is properly configured. Subscription purchase works correctly on iOS, but on Android, it displays the following error: PlatformException(5, The product is not available for purchase., {code: 5, message: The product is not available for purchase., readableErrorCode: ProductNotAvailableForPurchaseError, readable_error_code: ProductNotAvailableForPurchaseError, underlyingErrorMessage: Error updating purchases. DebugMessage: . ErrorCode: ITEM_UNAVAILABLE., userCancelled: false}, null) I have tried the following methods, but they all result in the same error:var customerInfo = await Purchases.purchasePackage(package!); var customerInfo = await Purchases.purchaseStoreProduct(package!.storeProduct); var customerInfo = await Purchases.purchaseProduct("tv_basic_annual"); There are other threads where the same issue is reported, but the solutions are fo
I’m following the RC docs for Stripe. I had one questions. After calling the RC POST receipt endpoint, will RC fire a webhook to my server with the subscription and or trial start event?
I don’t know if paywalls do not work in objective-c or if I’m doing something wrong. Well it currently doesn’t work that way and crashes on initialisation:RCPaywallViewController *paywallController = [[RCPaywallViewController alloc] init];[self presentViewController:paywallController animated:YES completion:nil];
I use react native (react-native-purchases 7.4.0) and while executing getCustomerInfo, i get the correct subscription status (It is a renewal in a subscription).{ "activeSubscriptions": [ "rc_5_1m_1w0" ], "allExpirationDates": { "rc_5_1m_1w0": "2024-01-04T09:54:55Z" }, "allExpirationDatesMillis": { "rc_5_1m_1w0": 1704362095000 }, "allPurchaseDates": { "rc_5_1m_1w0": "2023-12-04T09:54:55Z" }, "allPurchaseDatesMillis": { "rc_5_1m_1w0": 1701683695000 }, "allPurchasedProductIdentifiers": [ "rc_5_1m_1w0" ], "entitlements": { "active": { "month": [Object ] }, "all": { "month": [Object ] }, "verification": "NOT_REQUESTED" }, "firstSeen": "2023-12-04T19:19:26Z", "firstSeenMillis": 1701717566000, "latestExpirationDate": "2024-01-04T09:54:55Z", "latestExpirationDateMillis": 1704362095000, "managementURL": "https://apps.a
Contacted support already about this issue and received a response asking me to try enabling debugging but I replied back to say that the code snippet I provided included this linePurchases.setLogLevel(LogLevel.debug);Which as far as I know enables debugging so it was already on. Two days on I never received another reply from support so I’m trying here.I'm using the code below with revenue cat testing with a sandbox user in my flutter app. The apple in app purchase window appears, I purchase, input the password and it goes to the next screen to finish the purchase but I never actually see "Purchase successful. Ads removed!" printed. The public_sdk_key must be correct since the correct offerings are found. Of course the keys and IDs below are not the ones I'm using for testing, I am using the correct ones. I have created a non consumable in app purchase in app store connect and it's status is 'ready to submit'. pubspec.yaml import = purchases_flutter: ^6.4.0 Offering? _offering; @overr
I have four Google Play subscription types:Standard Monthly - $5/monthStandard Annual - $50/yearPro Monthly - $10/monthPro Annual - $100/year We are struggling with the following scenario:A user pays for Standard Annual then quickly changes their subscription to Pro Monthly (e.g. they only use 1/10th of the standard annual entitlement).Where does the value of the unused Standard Annual entitlement go?We would like the unused value of the Standard Annual entitlement (e.g. $45) to be credited to their account and used for their Pro Monthly payment - is this possible?
I want to activate and deactivate an IAP for lifetime in Google Play Console (and NOT in RevenueCat) because I want to not to show up in any Google Play page.In order to detect in my app if that IAP is active or not - is there a flag that tells me “active/inactive”?I tried to find it in the Android SDK doc but couldn’t find anything.
I have set up the storekit configuration file as per your guide but when using it with the duplicate scheme the offerings fail to load:Error fetching offerings - The operation couldn’t be completed. (RevenueCat.OfferingsManager.Error error 1.) There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More information: https://rev.cat/why-are-offerings-emptyHowever id I use the original scheme in xcode the offerings load fine, which suggests there’s a problem with the storekit config file, but I don’t know what. The product ID seems to be correct and it’s target membership is set to Runner. Also if I edit the Runner copy scheme to remove the storekit config file it also manages to load the offerings. There’s so little to set up with the storekit config file I don’t know what could be wrong. Of course I also downloaded the certificate and uploade
Hello,I tried to test current MagicWeather and purchase_tester Flutter examples with iPhone 15, purchases_flutter: ^6.3.0I configured everything correctly; “paywall” shows in-app subscription, I click to buy, it opens native iOS screen where I input Email and Password and confirm purchase, then it goes back to “paywall”. It is in a loop. I tried to debug. After making purchase, it goes back to “paywall”; when I close “paywall”, I receive this output in debug console of XCode: metrics = { actionUrl = "sandbox.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy"; dialogId = "MZCommerceInAppBuy.ConfirmationNeededForBuyRecurringItem.CPS.Auth"; eventType = dialog; message = "Sign in with Apple ID"; mtEventTime = "2023-11-18 16:08:20 Etc/GMT"; mtTopic = "xp_its_main"; osloTitleType = text; osloTitleValue = "AbstractSalableInfoModule.SandboxTitle"; topic = "xp_its_main"; }; pings = ( "https://xp.apple.com/report
Looking at this guide and it makes sense but for data deletion I am still trying to understand what information RC is collecting that I am not providing via the SDK. I do not set any attributes or anything extra. Just the app user id which is a guid. Does anything still need to be deleted from RC when user deletes /requests delete their account?Also how does this work if user still has active subscription but delete is request and the delete would be made via the RC API?
This is the Crash Report I got from the Play Console: Typejava.lang.NullPointerExceptionException java.lang.NullPointerException: at com.revenuecat.purchases.PurchaseParams$Builder.<init> (PurchaseParams.kt) at com.xxxxxxxxxxxx.MainActivity.purchase (MainActivity.java:2103) at com.xxxxxxxxxxxx.MainActivity.lambda$showPaywall$33 (MainActivity.java:2014) at android.view.View.performClick (View.java:7792) at android.widget.TextView.performClick (TextView.java:16112) at android.view.View.performClickInternal (View.java:7769) at android.view.View.access$3800 (View.java:910) at android.view.View$PerformClick.run (View.java:30218) at android.os.Handler.handleCallback (Handler.java:938) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8751) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodA
I am currently facing an issue with tracking subscription purchases in my iOS application using Revenucat. While I can successfully track in-app purchases, subscription purchases seem to elude the tracking mechanism. I have meticulously reviewed the relevant code and event tracking settings, but the issue persists.Has anyone encountered a similar problem before or can offer suggestions on how to correctly configure subscription purchase tracking? I would greatly appreciate any insights or assistance.
the below method has two handlers for the purchasepublic func presentPaywallIfNeeded( fonts: PaywallFontProvider = DefaultPaywallFontProvider(), shouldDisplay: @escaping @Sendable (CustomerInfo) -> Bool, purchaseCompleted: PurchaseOrRestoreCompletedHandler? = nil, restoreCompleted: PurchaseOrRestoreCompletedHandler? = nil)How can our application detect when the purchase is completed or restored when using a custom paywall?
I’m using the following code to set originalPurchaseDate: Purchases.shared.getCustomerInfo { info, error in if let error = error { print(error) return } if let date = info?.originalPurchaseDate { UserDefaults.standard.originalPurchaseDate = date } }However I noticed `info?.originalPurchaseDate` is nil (either the info or originalPurchaseDate) in production. (I extracted UserDefaults on my JB device, the app is installed from the AppStore and I can see the StoreKit/receipt is present as expected)In the debug build the info (CustomerInfo) is not nil, but as expected the `originalPurchaseDate` is not available.What could be the problem?I want to use this code in my second app which I’m moving from the paid-upfront to freemium, but it seems I might not be able to use it.Thank you.
I like the documentation how to display products, but is there a similar one of how to display active subscriptions?Once user makes a purchase, I would like to display information about this purchase in a Membership management screen. Currently I am relying on getCustomerInfo().entitlements.active, but that does not describe the products well. I would like to show the display title and description of the product(s) that was purchased at that point in time even if it is not offered anymore.Is there a way to get full information of the purchase like that is more than identifiers? PS: FIWI in react-native I tried calling getProducts(customerInfo.allPurchasedProductIdentifiers)but that errors out:Error: Unknown error. at Object.promiseMethodWrapper [as getProductInfo]
Hi!I’m trying to use RevenueCat as Observer to analyze and confirm the purchases in my mobile game… Unity IAP handling the process and I need the RevenueCat to read trustable data via being Observer…The documentation feels unclear to me so I’m here to ask my questions via these post:Do I need to add my store products (consumables and non-consumables) to RevenueCat dashboard as well while using it as Observer? Is there a function to call RevenueCat to collect the data of purchasing? When Unity IAP completes a purchase process, will RevenueCat handle the data automatically?Please don’t mind me if these questions are so cheesy but I had to ask to learn.Thanks!
I know this question has been asked sometimes, but I could not find definitive answers. I have three apps on the App Store, having auto-renewable subscriptions. I would like to create a subscription bundle, where user can purchase the subscription bundle from any of the three apps. Obviously, the user should get access to all three apps once the purchase is successful. Here is the link from Apple, describing what I’d like to do: https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/subscriptions_and_offers/offering_a_subscription_across_multiple_appsIs there a way to implement this “easily” in RevenueCat? I once read that I would need to have my apps in one single RC project. At the moment, the three apps belong to three different projects. If this is the way to go, could someone give more details on this implementation (I cannot find it in the docs):If the apps are in the same project, will the user get assigned the same userID across the
Hi,I just wanted to let you know there is a typo in your documentation regarding the dependency for Debug UI on Android. Instead of:debugImplementation "com.revenuecat.purchase:purchases-debugview:6.9.2"releaseImplementation "com.revenuecat.purchase:purchases-debugview-noop:6.9.2"It should be debugImplementation "com.revenuecat.purchases:purchases-debug-view:6.9.2"releaseImplementation "com.revenuecat.purchases:purchases-debug-view-noop:6.9.2" Note the “s” at the end of “com.revenuecat.purchases” and “debug-view” instead of “debugview”.
Hello, I'm using RevenueCat on Flutter (purchases_flutter). Yesterday Google sent me a mail that the previous PBL version 4 will be deprecated so upgrade to PBL version 5.My using purchases_flutter version is 4.2.2. So I have to change version to 5.7.0.But there is no new version of purchases_flutter documentation.final purchaseInfo = await Purchases.purchaseProduct(REMOVE_ADS_ID);Previous I used this code. But now how I can fix it?
Hi!I have 2 paywalls configured - one with subscriptions and one with consumables. Is it possible to select which paywall to present using RevenueCatUI? Or the "default" one will always be presented?I would like to use them both (not in an experiment) - in different parts of the app. Thanks!
Hi,I’ve followed the tutorial to properly setup RevenueCat on Android via Google Play but I can’t figure out how to make it work when there are multiple packageNames from the mix of buildTypes & variants. For instance, I have two buildTypes (debug & release) and two productFlavors (default & staging). Which means I have the 4 followings configurations:com.mycompany.myapp com.mycompany.myapp.debug com.mycompany.myapp.staging com.mycompany.myapp.staging.debugI understand I have to create 4 different Android apps in RevenueCat to match these 4 package names.But does that mean I also have to create 4 different apps in Google Play, even if only the first one (com.mycompany.myapp) is meant to be published? That seems to be Is there a way to tell RevenueCat to map the correct subscriptions in the Google Play console with only one app?
Looking through the SDK, it looks like the application package name must exactly match the name provided in the RevenueCat dashboard. This makes sense, but it breaks the common practice of using Android’s applicationIdSuffix to install a debug version alongside of a release version, which is a really useful feature.Is it currently possible to manually specify an application package name rather than deriving it from the application context? If not, it would be really nice to be able to do so, or at least to allow specifying an applicationIdSuffix to the RevenueCat SDK. Something like this?PurchasesConfiguration.Builder(context, API_KEY) .applicationIdSuffix(“.debug”) .build()
Hi. I’m try to buy the product: const result = await Purchases.purchasePackage(this.selectedPackage);It’s resolves success, but result.customerInfo.entitlements.active is empty. In Xcode i receive following warning:Transaction '2000000463276919' will not be finished: it's a non-subscription and it's missing in CustomerInfo list: []What’s happening?
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.