Get help with your SDK implementation.
Recently active
At WWDC 22, Apple released a session video about proactive in-app purchase restore. From what I understand, this is a way for an app to automatically restore a user’s purchase (e.g. after a re-installation) without them having to use a “Restore Purchases” button.I’m not sure if this is new or if this was supported all along, so my question is: Does the RevenueCat iOS SDK have support for this? I already found the syncPurchases function but I’m not sure whether it is the right API for the task.
In our testing, we tried a sandbox PurchaseProduct on Android that resulted in a code 10 network error:"message": "Error performing request.","context": "PurchaseProduct","underlyingErrorMessage": "Hostname api.revenuecat.com not verified:\n certificate: sha1/3LiOs5Y962AdAv8grdgm7+0i67g=\n DN: CN=*.gci-mckinsey.com\n subjectAltNames: [*.gci-mckinsey.com]","readableErrorCode": "NetworkError","code": 10 The tester then attempted to purchase the same subscription and got a code 6 (ITEM_ALREADY_OWNED). Because of this, our app triggered a SyncPurchase, resulting in a subscribed status for the user after a few seconds. However, a email was promptly sent to our tester by GooglePlay about the subscription being cancelled as in that scenario, no acknowledgement had apparently been sent by Revenue Cat. So apart from the network issue, the concern for us is that recovered transactions are not acknowledged by the API. If it can help debug, the UserID is DBE441C2AD27727E To try to mitigat
I'm using v4.16.0 and when I try subscribing to auto-renewal purchase I get this error:The subscriber has reached the max number of apple receipts allowed. At the moment the app is already live and this is critical.I really appreciate your time and help.
Hi,I would like to integrate payments among users depending on products they offer other users. I already implemented subscription on Revenuecat. However, I couldnt have found a sample or article for managing payments among users of the application. Is it possible to integrate such a feature through Revenuecat?
Hi, Not directly related to RC, do you know if it is possible to have multiple introductory offers per subscription? For example see below, I created 2 intro offers, both are free-trial but with different durations, some users I would like to give the free-week and for the others the free-3-days.Assume that both offers are valid on all countries (for testing I just enabled in 2).I am not sure how to do it using the RC SDK hence I am not sure it’s even possible, on Apple website I see they write that an Introductory Offer limit is “One offer per subscription, per territory”, so I guess it’s impossible but just wanted to be sure…Thx.
Specifically for Google Play:Can we see if the user has paused the subscription? Can we pause the subscription via the SDK (or send the user the right place to do so)?
Hi,We’re going to add introuctory offers to some products in our iOS app. And we want to make sure we display the right choise for each user depending on their receipts. So it looks like we could achieve this by using checkTrialOrIntroductoryPriceEligibility. However, because it could result into refreshing user’s receipt, the AppStore sign-in dialog may appear. As I see from the current logic in the SDK it happens only when the receipt is missing in the app bundle. Which shouldn’t be the case for AppStore build. Though it’s a usual case for development and sandbox builds. Particularly the dialog appears if I try to call this method when there’s no sandbox user logged into device AppStore.Thus we have a concern about prompting AppStore sign-in dialog unexpectedly in the process of Apple review causing a rejection. Mainly this post is the source of my concerns. And also this recommendation from Apple: The application can advise the user that the appStoreReceipt appears to be outdated a
I am very new to Revenuecat so I may have missed something. Consider the following: SituationSuppose a user is currently using premium version A. Suppose it has decided to downgrade to premium version B - in the same Subscription group, and thus ‘purchased’ version B via the app, using the RevenueCat SDK. The downgrade will only become active when the current period of version A expires. In the RevenueCat dashboard I see the event: Changed their renewal preference to ‘Premium version B’. ComplicationAfter ‘purchasing’ version B nothing seems to change to the customerInfo object indicating that a downgrade to version B is expected to come. QuestionI’d like to inform the user that their renewal preference is changed to Premium version B, how can I achieve this if nothing of this kind is available in the customerInfo object? Additional infoI am currently testing only with purchases in the app store.
I have gone through the whole setup. I am testing on a phone I have already made an in-app-purchase on. At the start I received CustomerInfo correctly, but now it is empty all the time. Any idea what is going on? For reference, the offerings are received correctly, and I can see the purchase in the dashboard. It seems to have another app user id though, for some reason.
Hello,My team is having difficulty integrating RevenueCat into our Unity based game (iOS and Android). Are there sample applications for Unity that illustrate use of RevenueCat for subscription billing.
I have implemented subscriptions which work fine when I test the app in testflight. When live it doesn’t work. I’m still trying to debug but because it only appears on the live app it’s a little difficult to debug. I’m putting a new version out where I send some firebase events to help me debug the state of things. But posting here in case there’s something obvious I’m missing… Thanks for any pointers on what to check Daniel
Hi,I’m, trying to upgrade my app to use Billing Library 4 for Android as per the new requirements for updates on Google. However, the new 4.0 version of the Revenucat SDK for React doesn’t run on a clean IOS build with the SDK installed - throwing loads of errors. So, two quick questions for you all:Q1: Does the Version 4.0 of the Revenuecat React Native SDK need me to upgrade my Xcode to 14? (i’m on Xcode 13)Q2: Version 3.3 of the Revenuecat React Native SDK works fine for IOS. However, does it use the Billing Library 4 that I need?Thanks in advance!Paul
My app is properly configured in the appstore, but it probably even doesnt matter because it just not start with the flutter purchases package from RevenueCat. XCode hangs after the debug log “DELEGATE SET” from purchases and I can only stop the process. Screenshot attached.However if I start it from VSCode it runs but nothing is returned from the API like getProducts returns empty list. I can however see entitlements from the getCustomerInfo().I’m trying to run on Simulator (iPhone 11).My env is the newest flutter SDK, newest flutter package. I integrated the RC package in Android with no problems at all. iOS seems to be a no go without your assistance.Hangs on that line as in the picture. Playing again cause restart and the same scenario.
Currently I am only using RevenueCat for iOS only. In the future I will have a web purchase that is redeemed on my app. Currently should I set up the App Store Server Notifications? Will adding that server address in my App Store Data “Production Server URL” section speed up the performance of authenticating purchases? Currently this week the authenticating feels very slow, minutes vs seconds.
Hi there,We have had multiple users complain about being billed for multiple subscriptions at the same time.After some investigation we discovered that if an Android user has a subscription paused in the Google Play Store, they are prompted to subscribe again because the SDK reports that they have no active subscription. The original paused subscription will eventually resume and the user will end up with multiple ongoing subscriptions.Re: RevenueCat/purchases-android"Subscription Paused" - This state won't be able to be directly detected through the SDK currently, but is already logged as a future feature. Google recommends providing a deep link for the user to manage their subscription. This can be accessed through the managementURL property on the Purchaser Info object and shown to users with an expired subscription.Is there an update to this? I wasn’t able to find anything. Being able to detect that a user has a subscription paused would allow us to not let the user subscribe twice
Hard to believe but the console added 2 non-subscription InApps to the project. In the screenshots they are CONAS & CLDAS. We have been selling this app for eight years with seven InApps including these two. Why the console added these two, I have no idea. Our intention is to sell monthly or annual subscriptions with the app.Any ideas on how this happened? How do you delete products? (If it was in the doc we won’t we posting here, please send a screenshot of how to delete these products as there is no delete option in our view, see screenshot)Thanks for any help.
When I run this command Purchases.purchasePackage(selected_package). I don't know where I am wrong. My Function : const {purchaserInfo} = await Purchases.purchasePackage(selectedPackage); Get this error from LogCat12-26 11:46:43.991 25754 26222 E unknown:ReactNative: Exception in native call12-26 11:46:43.991 25754 26222 E unknown:ReactNative: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter packageIdentifier12-26 11:46:43.991 25754 26222 E unknown:ReactNative: at com.revenuecat.purchases.hybridcommon.CommonKt.purchasePackage(Unknown Source:2)12-26 11:46:43.991 25754 26222 E unknown:ReactNative: at com.revenuecat.purchases.react.RNPurchasesModule.purchasePackage(RNPurchasesModule.java:148)
I’ ve properly installed RevenueCat in android app and its workingfor Annual offering…but when i have created new offering with 4 type subscription monthly, 3 month, six month, and annual - properly follow the process but then i am not getting latest offering, i am getting again and again old offering.can you please help me out from this issue i am stuck here almost 1 month completed.Thankyou in advance.
After 10 rejections, I’m trying to get some help here. In my latest app, I’ve a $5/month subscription. Everything works fine when I compile using Xcode or distribute to my beta testers with TestFlight.But when I submit the build to Apple, they alway (10 times!!!) reject it because of a “Unknown error.” after successful purchase. Here is the message they send every time: Guideline 2.1 - Performance - App CompletenessAn error message is produced when attempting to complete the in-app purchase transaction.Please see attached screenshot(s) for details. Thanks for your help!
As title says, getting "There was a credentials issue." on android after 72+ hours. I am using `"react-native-purchases": "^4.2.0"`. Followed this guide https://docs.revenuecat.com/docs/creating-play-service-credentials#2-create-service-account to setup service account. Subscription purchase goes through (and buying the same 2nd time Google says it is already purchased, but when RevenueCat tries to validate recipe, it says: ```07-23 11:59:32.855 32097 3011 D [Purchases] - DEBUG: ℹ️ API request started: POST /receipts07-23 11:59:32.857 32097 3011 D [Purchases] - DEBUG: ℹ️ API request completed with status: POST /receipts 50307-23 11:59:32.858 32097 3011 E [Purchases] - ERROR: 🤖‼️ There was a credentials issue. Check the underlying error for more details.``` How should I solve this?
Users on Android are complaining that they are paying for a subscription but they are not getting any features unlocked. I can see the correct “Offerings” on my Android device, so it seems like the app setup is correct. I can unlock access for users manually through RC’s API, so when an “Entitlement” is granted, it is unlocked in the app. I can see the subscriptions go through Google Playstore, but they are not picked up by RC at all.So what could be the problem? Here’s what I have checked off:Made sure bundle IDs match. Made sure the “Products” registered with RC unlock the correct “Entitlement”.As per the current privacy policy, I am not logging any errors and cannot see specifically what is wrong on the end of the users.
I have a watchOS only app, and the default project setup from Apple contains 3 targets:<app name> - com.homecraftedindustries.<app name> <app name> WatchKit App - com.homecraftedindustries.<app name>.watchkitapp <app name> WatchKit Extension - com.homecraftedindustries.<app name>.watchkitapp.watchkitextensionWhich one of these bundle identifiers is the one I should include in RevenueCat as the App Bundle ID?
I’ve sat up all the configs and offering as well as testing them using StoreKit which was successful on the emulator.When trying to test with a real device, I encountered this error.I’ve checked to configurations, offering and product, no issue has been found.StoreKit products and Apple Connect products have the same data (almost) with the same product id.
Good eveningFrom our understanding, on iOS, the purchase of a non-consommable or subscription can end up in the deferred state for example: permission of parent needed to complete the purchase. We would like to know at any moment the deferred or not state of a product. This way, we can reflect accordingly within our UI. If this is not possible with RC, why? And what is your best practice recommendation? We believe that with SK1, we are able to check this anytime thanks to the payment queue? Cheers
My question is simple. Since use server-less database, I don’t want to learn some other language and create my server side validation to prevent fake purchases with jailbroken phones. Even I create a server side validation, there are bunch of apps that they can directly access to “.success” method while purchasing and give the game tickets to the scammer. So I need to learn If I change it my all apps to RevenueCat, do you handle the validation & verification of the “real purchases” or should I go with learning server side.
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.