Get help with your SDK implementation.
Recently active
I have an iOS App using Purchases SDK version 3.13.0I have factory reset the iPad I am testing with.I am running a development build (debug)I have never made a purchase with this device after factory reset.On startup of the app I will present an onboarding screen to purchase subscription.My IAP has a 1 week free trial then a monthly subscription.I call the API checkTrialOrIntroductoryPriceEligibility to try and know whether I should inform them if the free 1 week trial is available to them.I was not expecting the dialog “Sign in with Apple ID to pop up” along with soft keyboard over the top of my onboarding screen.Is this expected behavior? I would prefer the Apple dialog “Sign in with Apple ID” be user initiated.I see the following Purchases Log in console if that helps.2021-11-19 11:16:08.928454-0700 Pick 3 Pro[582:34641] [Purchases] - DEBUG: ℹ️ Debug logging enabled2021-11-19 11:16:08.928736-0700 Pick 3 Pro[582:34641] [Purchases] - DEBUG: ℹ️ SDK Version - 3.13.02021-11-19 11:16:08.
Hello, When I purchase an in-app non renewable purchase, the Webhook will still trigger, with the old userID as an app_user_id. Details :I’m having an issue when I switch accounts (userID) but use the same Apple ID (in Sandbox)(I don’t know in production). I’m using of course, logOut then LogIn. And I verified that the new userID is well accepted by the SDK on iOS. PS: I’m using alias (legacy) for the userID management, should I switch to transfer ? maybe it’s causing the issue ? Thank you,Using Xcode / Purchase SDK Cocoapods
I have done some searching on this topic, but I haven’t found anywhere that addresses it directly. I have an iOS app with a renewing annual subscription. If I wanted to offer existing subscribers an incentive to share the app, such as giving them an addition month of service for every relevant action. I don’t see a way to do this without disrupting their existing subscription, even if I took care of the accounting of starting the one-month of free access and then tried to trigger their next month.The best I could think of was to offer them to renew with a different annual subscription that had a 1 month free trial. But that doesn’t necessarily scale well for different numbers of incentives.I hope that makes sense.
Hello,When talking to the RevenueCat API from the web, is there a way to mark those calls as intended for sandbox/staging? When using the mobile SDK, the system knows the IAPs are meant for sandbox because of the build environment on the iOS or Android side. Just wondering how to indicate the same when making web API calls?
Hi there, I am facing issue after making purchase with Play Store. After click on buy button, Play Store gives error “This product is already active for the user.” when i am already subscribed and after that i am refreshing purchaserInfo with await getPurchaserInfo() and getting empty entitlement and all data. Not getting data that i am already subscribed. Purchase history is also getting empty.Please help me.Thank you in advance.
On ios after a purchase succeeds a dialogue box saying “"You're all set your purchase was successful" pops up. Is there a way of preventing this?I want to ask the user to login right after the purchase in this dialogue gives the user an opportunity to blow past the login. I’d like to make that less likely if possible. thanks
Hey — We’re super excited to deeply integrate some of our support and workflow tools to use the new App Store APIs to extend subscriptions and issue refunds. Primarily this one: ExtendRenewalDateRequestThe request body containing subscription-renewal-extension data. But it requires to access the transaction ID, which the RC SDKs don’t expose easily. What’s the recommended way to get this done with RC?
When attempting to implement the PaywallView of the example SwiftUI project in my own project targeting iOS 15.0 I am receiving 2 errors. Referencing initializer 'init(_:content:)' on 'ForEach' requires that 'Purchases.Package' conform to 'Identifiable'ForEach(offering?.availablePackages ?? []) { package in PackageCellView(package: package) { (package) in /// - Set 'isPurchasing' state to `true` isPurchasing = true /// - Purchase a package Purchases.shared.purchase(package: package) { (transaction, info, error, userCancelled) in /// - Set 'isPurchasing' state to `false` isPurchasing = false /// - If the user didn't cancel and there wasn't an error with the purchase, close the paywall if !userCancelled, error == nil { isPresented = false } } }}https://github.com/RevenueCat/purchases-ios/blob/c63984004d09f1b131ffdb2b99cfb1c14eaaa76e/Examples/MagicWeatherSwiftUI/Shared/Sources/Vi
We’ve moved from using Unity IAP and RevenueCat in observer mode (unity 3.7.5) to using RevenueCat for full subscription management (unity 3.12.3). We haven’t faced any issues during testings updates, but after release we’ve noticed that some users have no access to their active subscriptions without pressing Restore button.We are using Aliased (legacy) restore behaviour and not using anonymous user id - user id is set up with app install with appUserID.Let me explain the difference found between users and information tracked for them. Both next cases have active subscriptions.Case 1 - subscription is still available after updateOn Customer profile we see that user has no updated Last Seen App Version and Last Seen SDK Version. But he has active subscription and smooth update experience.Case 2 - after update user has no info about active subscription and has to press restore buttonOn Customer profile we see that user has updated Last Seen App Version and Last Seen SDK Version (unity 3.
I have 2 rooted Android devices for testing, both with Google Play Services installed.When getting the offerings one returned “PurchaseNotAllowedError” and another one is ok.Is this error returned by Google Play or RevenueCat?Any more info could be given?
I'm starting to use the revenuecat SDK to push subscriptions to my apps. I have an app that is currently paid and I would like to convert to the subscription model.In IOS, I have implemented a check to verify the first version that the user was installed, and if this is paid, I can deduce that the user has already paid for the app.My problem comes with the android version, since in the sdk of this platform I cannot find an attribute similar to that of IOS that indicates the version or the date of the first installation of the app by this user. Is there any mechanism to be able to perform this check in android?
Hello,I am using flutter_inapp_purchase to manage in app purchase for my app. Now I migate old subscription that purchase by flutter_inapp_purchase to RC(RevenueCat) via Client Side Migration. But when I run drop release I got some crash:No virtual method getSku()Ljava/lang/String; in class Lcom/android/billingclient/api/Purchase; or its super classes (declaration of 'com.android.billingclient.api.Purchase' appears in /data/app/~~xCl5ZlazDyYqv4VPMsJnNg==/plant.identification.snap-HZYCA9GF94ar8lvpjvIVmQ==/base.apk) at com.dooboolab.flutterinapppurchase.AndroidInappPurchasePlugin$7.onPurchasesUpdated(AndroidInappPurchasePlugin.java:98)I have to use flutter_inapp_purchase to get subscription info then send it to RC. But flutter_inapp_purchase using Google Play Billing Library 3.0 and RC using Google Play Billing Library 4.0 that removed getSku() function.Do you have solution for this?Thank you
The entitlement identifier shows an purchase date of:While the user bought a new subscription at:It seems that the latest purchase date of the active entitlement is also returning the 2021-07-27 date from what I can see in the logs.My question is:Why isn’t the active entitlement date updating to the latest purchase?For full context: This user purchased a non-renewing IAP last year and now purchased my newest auto-renewing IAP.
Hi,The payment sheet is not displaying a free trial information even though everything is set up properly on App Store Connect. The issue that I have is very similar to this https://community.revenuecat.com/sdks-51/reactnative-payment-sheet-not-showing-trial-period-552 although I am using Flutter not React Native. Thanks,
Getting the following error on Play Console. We've detected this app uses an unsupported version of Play billing. Please upgrade to Billing Library version 3 or newer to publish this app. I am using the latest revenuecat library implementation 'com.revenuecat.purchases:purchases:4.3.1' FYI, we are using Dexguard .How to fix the error ?
Hi we rejected many times for this reason.I installed last version 3.12.8 Guideline 1.3 - Safety - Kids CategoryWe noticed that your Kids Category app includes analytics, advertising and collects, transmits, or has the ability to share personal information or device information with third parties. Specifically:- Your app includes third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA. We found that your app references the ASIdentifierManager API, which provides access to a user's IDFA, in the following location(s) in your binary:• /System/Library/Frameworks/AdSupport.framework/AdSupport• VodlyIt would be appropriate to remove all instances of “ASIdentifierManager” from your app, even if they are not utilized in your app's functionality.Next StepsTo resolve this issue, please remove this functionality or revise your app so that no personally identifiable information or device information is s
I get this warning in the console: “The value for FacebookAdvertiserIDCollectionEnabled is currently set to FALSE so you're sending app events without collecting Advertiser ID. This can affect the quality of your advertising and analytics results.” I believe I’m following the instructions for setting this stuff. On app load: await Purchases.setDebugLogsEnabled(true); await Purchases.setup(JumpspeakConfig.revenueCatApiKey); await Purchases.collectDeviceIdentifiers(); final facebookAppEvents = FacebookAppEvents(); await facebookAppEvents.setAutoLogAppEventsEnabled(false); final facebookAnonymousId = await facebookAppEvents.getAnonymousId(); if (facebookAnonymousId == null) { logError('Could not get anonymous Facebook ID'); } else { await Purchases.setFBAnonymousID(facebookAnonymousId); }FacebookAppEvents is a 3rd party library but I confirmed it gives me an anonymous ID (that error log does not get reached) I also confirmed the values we should see for the customer if thi
Hey there, we’ve been integration RC in our Flutter app the last couple of days. Until now everything worked fine and as expected. But suddenly I cannot perform purchases on iOS anymore. (Subscriptions) In fact the iOS Payment sheet is no longer showing up and sometimes I get an error of ‼️ The receipt is not valid.in the debug console. Sometimes this error doesn’t occur and it seems as if the purchased was successful. It doesn’t show up in the RC dashboard anyways in that case. (sanbox data is enabled) I did already try: Logout and Login in with the sandbox tester in iOS settings. Create a new sandbox tester Go back to a earlier git commit (to make sure, that the problem is not related to code changes on our side)Do you have any idea what I might do next? Best Raphael
The following is the console log after running a Purchase! [Purchases] - DEBUG: makePurchase[Purchases] - DEBUG: Purchasing product from package - 20_Annual in Offering Default[Purchases] - DEBUG: PaymentQueue updatedTransaction: 20_Annual 1000000905494521 ((null)) 1000000900724181 - 18.8.0 - [Firebase/Analytics][I-ACS023141] Purchase is a duplicate and will not be reported. Product ID: 20_Annual[Purchases] - DEBUG: Loaded receipt from url file:///private/var/mobile/Containers/Data/Application/394FDF88-2AA3-4C58-A311-3F9B84500545/StoreKit/sandboxReceipt[Purchases] - DEBUG: Found 0 unsynced attributes for App User ID: tu7gcKSaiUN7GmjYdbOSa94pPKs2[Purchases] - DEBUG: There are no requests currently running, starting request POST /receipts[Purchases] - DEBUG: API request started: POST /v1/receipts[Purchases] - DEBUG: API request completed with status: POST /v1/receipts 200[Purchases] - DEBUG: Serial request done: POST /receipts, 0 requests left in the queue[Purchases] - DEBUG:
hey!I have a hard coded text in my app (“One week trial”) now i want to change my introductory offer to 3 days how can I get this period in Revenuecat so I can set up its text dynamically ?
Hi as some users might have already posted, since upgrading one of my device to iOS 15, GetPurchaserInfo returns null. Rebooting the phone and running the app again will work but on renewal it will once again return null. All is well on iOS 14. Still using code from demo app https://github.com/RevenueCat/purchases-flutter/blob/master/example/lib/main.dart. Any idea of a fix.. ? Thanks ! ✓] Flutter (Channel stable, 2.5.1, on macOS 11.4 20F71 darwin-x64, locale en-GB)[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)[✓] Xcode - develop for iOS and macOS[✓] Chrome - develop for the web[✓] Android Studio (version 4.2)[✓] VS Code (version 1.60.1)[✓] Connected device (2 available) Pubspec: purchases_flutter: ^3.4.5Phone: iPhoneX (iOS 15.0)
Everything works just fine when testing locally and using testflight, but Apple keeps rejecting our App because their purchases fail with “INVALID_RECEIPT” according to our application monitoring.Any clue what could cause this issue?
I am receiving entitlement.isActive == true when expiration date is already long passed.Here’s my code:Purchases.shared.purchaserInfo { (purchaserInfo, error) in if let error = error { complete(.failure(error)) return } if let entitlement = purchaserInfo?.entitlements.all[Self.entitleId] { if entitlement.isActive { UserDefaults.subscriptionCache = SubscriptionCache(isSubscribe: true, lastCheckedDate: Date()) } complete(.success(entitlement.isActive)) } else { complete(.failure(IAPError.noPurchasedItem)) } }Here’s my result: The current time is 10/23 0:00 UTC Please help me with this issue.
I have several offerings setup and my code looks similar to the example for react native although there is an extra error handle as not all cases are handled in the doc example (please see below)What is happening is that I make the purchase, I get a pop up saying “You’re all set - your purchase was successful” but then the code checks typeof purchaserInfo.entitlements.active[this.props.sku] !== 'undefined' and its undefined. So for some reason the purchase is happening but I’m not getting it added to my active entitlements. This error only happens around 50% of the time, so the fact it works sometimes has made it impossible to debug. try { const { purchaserInfo, productIdentifier } = await Purchases.purchasePackage(this.state.package); if (typeof purchaserInfo.entitlements.active[this.props.sku] !== 'undefined') { this.completePurchase(this.props.sku); //Add to our database } else { Alert.alert('Oops!', 'We ran into an issue... please try again later.')
I have integrated RevenueCat into my Unity project version 2021.1.17. It worked fine on iOS but I can’t get it to work on Android. At first, I tried installing it alongside Unity IAP but it did not work. Then I tried removing Unity IAP but still cannot get RevenueCat to work. After launching my app, I get the following series of errors that show up on Android Logcat: First, this error from UnityAds (I need RevenueCat and UnityAds to work together): Error UnityAds com.unity3d.services.store.StoreBilling.asInterface() (line:7) :: Billing service stub not found: com.android.vending.billing.IInAppBillingService$Stub: Didn't find class "com.android.vending.billing.IInAppBillingService$Stub" on path: DexPathList[[zip file... Next, this error from RevenueCat: Error Purchases {"purchaserInfo":{"entitlements":{"all":{},"active":{}},"activeSubscriptions":[],"allPurchasedProductIdentifiers":[]…Finally, when I try to purchase something, this error from RevenueCat: Error Purchases {"error":{"code":
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.