Get help with your SDK implementation.
Recently active
Are there downsides to calling Purchases.shared.login(<id>) several times?I don’t load the user id until the user has hit a shared TabBarController inside the my app after logging in through a third party. This call is reused whenever a user refreshes data or reopens the app.I’d like to call Purchases.login whenever user data is loaded. This can happen several times during a session, although typically it only happens once.This would be the simplest way to fill ids. I think it would also backfill existing users who won’t go through a login flow again.Thanks!
Hello,I implemented a subscription plan with 7 days of trial in my app using Flutter SDK version 3.2.2. Since I didn’t find an example for Flutter, I used this iOS code as a reference to implement the text for Trials period:https://github.com/RevenueCat/purchases-ios/blob/f2b25180ce5b65ec272a5144ed9f61dd135d5cee/Examples/SwiftExample/SwiftExample/SwiftPaywall.swift#L536 I currently see some strange behavior after the user started the trial and cancel it before the trial ended. When the user opens the subscription screen again after the trial ended, I’m using the getOfferings function to fetch the current offerings and I still get the introductoryPrice object. In the code example above I see that you check if the introductoryPrice object is not nil and based on this show to the user the introductory price text.So now, If the user cancels the trial, and then wants to subscribe again, It seems like the intro price is available but in fact, when he makes the purchase he will be billed imme
Anyone having this issue today ?Is there a server issue as my code has not changed ??
I’ve tried to use `-purchases:shouldPurchasePromoProduct:defermentBlock:` in Objective-C,But I don’t know how to call it in Objective-C. Please add the way to write it in objc to the docs?Thanks. https://sdk.revenuecat.com/ios/Protocols/RCPurchasesDelegate.html
Hi allI am using revenue cat in my app, And I configure my products and I set up the localization for them,However when I get my product they return always in english local, How I can change the local I want. I am using flutter SDK
Hi, I added RevenueCat iOS SDK to my app, but I already use in-app-purchase and I have paid customers, but when try callPurchases.shared.purchaserInfo { purchaseInfo, error in guard error == nil else { return }}I get purchaseInfo empty and don't have any purchase, can you please help me to fix this.Thanks.
Users of our Android app are seeing incorrect subscription information. Using SDK version 4.3.0. When debugging this issue we discovered that when calling Purchases.sharedInstance.getPurchaserInfoWith() the function sometimes returns incorrect data. It seems caching logic does not work correctly. For instance the function returns the PurchaseInfo object below when calling it now (nov 24th 20:53 GMT). The request date is 4 days off and there is no firstSeen date. We use these dates to verify trial status.<PurchaserInfo latestExpirationDate: null activeSubscriptions: {}, activeEntitlements: [], entitlements: [], nonSubscriptionTransactions: [], requestDate: Sat Nov 20 22:39:43 GMT+01:00 2021 >When querying the API directly with a GET request from within Postman the result is: { "request_date": "2021-11-24T20:02:28Z", "request_date_ms": 1637784148481, "subscriber": { "entitlements": {}, "first_seen": "2021-11-20T09:49:59Z", "last_
In my React Native I set subscriber attributes before I make a purchase. However in the “NON_RENEWING_PURCHASE” webhook the attributes are sometimes missing. Is this a race condition in your system? When I process the webhook I use the attributes to perform certain actions. What would you suggest is the most reliable way of making sure the attributes are synced correctly? Should I use the REST API within the webhook to fetch the attributes? Code snippet from my appPurchases.setAttributes(userAttributes)log.info('Set user attributed', userAttributes)await Purchases.purchaseProduct(productId, null, Purchases.PURCHASE_TYPE.INAPP) An example of the subscriber_attributes I am expecting back in the webhook are:{"subscriber_attributes": { "ability": { "updated_at_ms": 1637782170690, "value": "BEGINNER" }, "age": { "updated_at_ms": 1637781232715, "value": "24" }, "custom_group_id": { "updated_at_ms": 1637781232716, "value": "a
I have a app on the App Store with offer code for one subscription. If I send the user the URL with the code there is no problem. However. if a user installs the app then they can tap on the subscription that requires an offer code and there is no prompt to enter a code. They end up getting a free 6-month subscription. I want to use the offer code to limit who can purchase subscriptions. What am I missing? Is there a sample of offer code processing? I thought this would be all handled in the App Store since they provided the codes.
Hello,for the first time I am trying the integration with revenuecat for one of my apps (flutter) present on both stores.The goal is to remove advertising with one purchase only (non-consumable).The purchase works, the recovery after an uninstall works, but I don't understand how to managea refund: If the anonymous customer asks for a refund (or if I refund him), the purchase is always valid and isPro is always true.PurchaserInfo restoredInfo = await Purchases.restoreTransactions(); if (restoredInfo.entitlements.all['all_features'] != null) { isPro = restoredInfo.entitlements.all["all_features"].isActive;What am I doing wrong ?Thanks in advance.Enrico
Xcode updated to 13.2 for me overnight, and on subsequent compilation it complained that it can’t see the Purchases package for RevenueCat. I use version 3.12.6 of RevenueCat for iOS.I tried deleting caches and looking for latest version, but that didn’t seem to help.I tried deleting the package and reinstalling, but it just freezes at the “preparing to validate” stage- irrespective of whether I ask it to use version 3.12.6 or version 4.Any ideas?
We have recently launched promotional offers to our subscribers, and we know that some users have been purchasing them.Unfortunately, it seems that we do not see a transaction for a user purchasing a promotional offer in RevenueCat.We are effectively blind as to who has purchased an offer, and who hasn’t. This makes it difficult for us to provide support to users who have questions regarding payment etc.Question: if a user is not yet at the end of their existing subscription and they purchase a promotional offer, should we see the transaction inside the receipt and therefore in the RC dashboard immediately?
How can i Revenue cat Debug Log into any sheet or firebase. one of my user facing issue with subscription. now i want check revenue-cat log. and i don’t have any option to debug that case on my machine because user is not providing his credential.so i thinking to add debug log into bulid and provide that bulid to user. so i can read or check those debug log
I have 4 buttons in my app for subscription and one time purchases. In android when we click on button its immediately loads pay-screen but in iOS its take some time to show pay wall. How to show a progress dialog until pay wall loads? I am using like this below!onClick: () async{ await Purchases.purchasePackage(package!);}
Hello,I’m trying to grant users by writing to their userID, with a Webhook. When the Webhook triggers, and I get the original_app_user_id I search which user with this original_app_user_id is requesting a purchase, so I’m sure it’s this userID. ( see attached the code to query ) I update the original_app_user_id to the db right before I make a purchase from the iOS SDK by requesting purchaseInfo. Does it seems to be a good way to do it ? or I could face bad scenarios ? If a change might happens to the original_app_user_id will it be before, during or after the purchase ? PS: I’m using Transfer now (and before I used Aliases) Thank you, async function returnCurrentUid(original_app_user_id){ const querySnapShot = await fb.collection('in_app') .where('original_app_user_id', '==', original_app_user_id) .orderBy('request_date', 'desc') .get(); if (querySnapShot.empty) { return 'Unknown' }; const uid = querySnapShot.docs[0].id; return uid; };
I’m having trouble wrapping my head around what’s going on, but I’ll lay out expected results, and actual results below. Two Scenarios, two different issues. Scenario 1:Application is installed Anonymous user makes a purchase User logs into account RevenueCat.Login()Expected Results:The newly created user now has the membership entitlements. Actual Results:The newly created user does not have any entitlements until I restore purchases or attempt to purchase the subscription again. Important Notes:I tried out Revenue Cat about 5 months ago then came back to it now, so is it because maybe the user already existed from my old attempts causing the identities not to be merged? Scenario 2User A purchases Subscription Relaunch App User A RevCat Login User A RevCat Logout User B RevCat LoginExpected Results:Only User A has membership entitlementsActual Results:Whichever user logs in has membership entitlements
in flutter when i try to fetch offerings ,its showing empty list,but i added products in google play console and configured in revenceCat also,i dont know why its happning to me.
I have an app that is currently in the iOS App Store using RevenueCat for a one-time in-app purchase to unlock all the features.Current App • Version 4Bundle ID: com.example.version4I’m soon going to release version 5 of this app, but it’s going to exist side-by-side in the App Store with the prior version and have its own, new bundle ID.New App • Version 5Bundle ID: com.example.version5From within version 5, I want to be able to query RevenueCat to see if the user has a version 4 license so that I can upgrade them to version 5 for free.How can I check for the user’s prior purchase from within an app that has a different bundle ID?
When trying to make a purchase in the sandbox for Apple TV I receive ERROR: 🍎‼️ There was a problem with the App Store. To get around this problem I have to log out of my sandbox account on the TV and immediately log back in. This resolves the issue for 10 minutes or so when I then have to do the same thing again. Rinse and repeat. Outside of continually logging out and back in again, what can be done to more permanently solve this issue? This does not give me confidence to put something in production. Full error details: Optional(Error Domain=RCPurchasesErrorDomain Code=2 "There was a problem with the App Store." UserInfo={readable_error_code=STORE_PROBLEM, NSLocalizedDescription=There was a problem with the App Store., NSUnderlyingError=0x280058810 {Error Domain=SKErrorDomain Code=0 "An unknown error occurred" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x28007ba20 {Error Domain=ASDErrorDomain Code=500 "Unhandled exception" UserInfo={NSUnderlyingEr
A few weeks ago I was experimenting with transferring subscriptions if a user makes a logout or logs in with their login ("test1") from another device. Until recently, subscriptions were transferred to another device or login, but were canceled on the old login and device. Now I observe that it is enough to enter user Id on other devices and all devices will get a subscription, even if they have different google account. Anonymous ids are added to the "test1" account. So even those devices where the user left the account get subscriptions. It turns out that users just tell each other userid and everyone can buy a subscription to only onсe. How to restore the behavior where a user can use only one device and can't share a subscription only by passing his userid?
Context:My app has 2 subscriptions, monthly & yearly. They unlock the same content, so they are technically within the same “subscription group” as apple references them.The app has added one-time codes to the yearly subscription, which I made redeemable via Google Play (deep link from app to Google Play). Issue:The issue that I am having only happens to users who are currently subscribed (eg. to the monthly subscription) and redeem the (yearly) promo code via Google Play.Currently, to “upgrade” a user’s subscription, I have to provide `UpgradeInfo` to the `makePurchase` method. However, if the user makes a purchase/redeems a code from outside of the app, there is no way for me to upgrade from their current subscription. Questions:Listening to outside purchases:How can I listen to a purchases outside of the app to perform an “upgrade”? If I were to receive this outside purchase, how would I upgrade their subscription?Are there any other solutions to this that I may not be aware of?
I’m getting invalid product identifiers after updating the SDK to the latest version. RevCat was working perfectly before the update. Any suggestions on how to fix it or should I report it as a bug?
My Flutter app is showing a prompt to sign in with Apple when I call Purchases.checkTrialOrIntroductoryPriceEligibility on iOS. I found a related topic from a RC customer using the iOS SDK.The suggested workaround is to check if a receipt exists before calling checkTrialOrIntroductoryPriceEligibility. The Flutter SDK doesn’t seem to provide a way to check for receipts. Is there any workaround for me without writing custom iOS plugin code?It sounds like this issue only happens in the sandbox environment, but I’m concerned that my app will be rejected if the reviewer is constantly getting sign-in prompts.
Hi, documentation at https://docs.revenuecat.com/docs/purchaserinfo says that we should call getPurchaserInfo() any time a user accesses premium content.However, I can see that SDK updates its cache when app comes to screen.Is it still necessarily to call getPurchaserInfo() anyway?
Hi, We’re setting up Stripe on our webapp to work alongside our app. Now we’ve connected Stripe successfully through the dashboard and it looks ok there. But now when we want to save the receipt to RevCat is gives us this error: { "code": 7116, "message": "Invalid Stripe. Make sure your Stripe account is properly connected."} Don’t think the problem is the call itself, but here is the code: const _response = await fetch('https://api.revenuecat.com/v1/receipts', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Platform': 'stripe', 'Authorization': 'Bearer ' + REVCAT_KEY, }, body: JSON.stringify({ fetch_token: _subscriptionId, app_user_id: _userId, }), });Is there any way to get some clearer debug logs on what exactly is wrong?
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.