Get help with anything related to RevenueCat.
Recently active
I want to create a feature in my app that g9ves a user a free month for free “unlocking premium” if the user invites 3 “friends”. How can I make this happen? When I got on Apple Store Connect It only lets me add a free month at the start of their subscription
Good day… I am trying to ensure that when a user cancels their transaction (ie. is shown the iOS wallet / purchase sceen, clicks cancel) they are not provided with benefits of a subscribed user. At this time, I am following the suggestion of the example weather app which uses the below method… @Published var customerInfo: CustomerInfo? { didSet subscriptionActive = customerInfo?.entitlements[entitlementID]?.isActive == true }}How is a subscription active if they have cancelled the transaction and the transaction is nil? (lldb) po customerInfo?.entitlements["hb-2022-premium"]?.isActive▿ Optional<Bool> - some : true (lldb) po transactionCancelledtrue (lldb) po transactionnil
I have promo codes that I created on google play for my user. With this code, the user can use 3 months free of charge. When the user logs in on another device, I can't get the information that the user is in the trial period. Therefore, the purchase screen appears again. how can i solve this. I understand from the code below that the user is a premium member. Future updatePurchaseStatus() async {final purchaserInfo = await Purchases.getCustomerInfo();final entitlements = purchaserInfo.entitlements.active.values.toList();_entitlement = entitlements.isEmpty ? Entitlement.free : Entitlement.premium;if (entitlements.isNotEmpty) { _entitlementInfo = purchaserInfo.entitlements.active.values.last;}notifyListeners();}
I was testing my app tonight making sure changes were working and I went to test my subscription button in iOS. When I click it, it pops up an error that I have a problem with my configuration. I haven’t changed anything in the code. I did, however, set my prices to increase today (March 1st). Does this cause problems with RevenueCat? Is it something that will resolve on its own? I have found nothing to help me. Everything has been working great for the past week and it just tanked tonight.I have verified that everything works great with Google. My Apple products are not found for some reason. I even deleted my project and set it back up. Nothing. I have nothing to sign for Apple in my App Store Connect account.
According to the docs (https://www.revenuecat.com/docs/creating-offerings-to-test) it’s best to “use distinct Subscription Groups on the App Store for each RevenueCat Offering when testing”.This seems like things would get out of hand? Here are the issues I see:Each subscription in a subscription group has a unique product_id. RevenueCat suggests we use the following format: rc_2999_1y_1w0. These ids can’t be duplicated across subscription groups. So you would never be able to test the same setup in a new group. Should I be adding a new annotation to product ids if I want to use experiments? Something like: rc_2999_1y_1w0_exp1 Apple doesn’t seem too keen on you offering multiple Subscription Groups as there is a warning that pops up. I guess RC makes sure that a single user never sees multiple offerings… but what if that person were to sign out and back in with a new email? And they see the other offering? Couldn’t they end up purchasing a subscription from the other group at that po
The [docs](https://www.revenuecat.com/docs/webhooks#webhook-events) don’t mention about the event type when a promo code is used for a subscription. As soon as the user redeems a code, I want to get a webhook event so that I can update user’s data on my backend. How can I then do it?
I used an offer code to purchase a monthly subscription. However, RevenueCat is showing the value as 0 as opposed to £3.99. { "app_id": “removed", "app_user_id": "removed", "currency": "GBP", "entitlement_ids": [ "fullaccess" ], "environment": "PRODUCTION", "event_timestamp_ms": 1628613642804, "expiration_at_ms": 1631292033000, "is_family_share": false, "is_trial_conversion": false, "price": 0, "price_in_purchased_currency": 0, "product_id": “removed", "purchased_at_ms": 1628613633000, "store": "APP_STORE", "takehome_percentage": removed, "transaction_id": “removed"}
I have the following code, essentially straight from the documentation using react-native-purchases const PackageItem = ({ purchasePackage, setIsPurchasing, styles }) => {const {product: { title, description, priceString },} = purchasePackage; const navigation = useNavigation(); const onSelection = async () => {setIsPurchasing(true);console.log('being Purchase');try {const { purchaserInfo } = await Purchases.purchasePackage(purchasePackage);console.log('try purchase...');if (typeof purchaserInfo.entitlements.active['Pro'] !== 'undefined') {console.log('User has All Access');// navigation.goBack();}} catch (e) {if (!e.userCancelled) {console.log('error: ', e);Alert.alert('Error purchasing package', e.message);}} finally {setIsPurchasing(false);}};``` When I click on the subscribe button, I go through the dialogue and sign in and the subscription starts to process. However, once it begins to finish the transaction, it stops at the ```if (typeof purchaserInfo.entitlements.active['P
My my app got approved on the App Store 36 hours ago and was released to the public at that time. Subscriptions work perfectly in TestFlight, but when using the app downloaded from the App Store I get a message saying “None of the productions registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if tone is being used). More information: https://rev.cat/why-are-offerings-empty”. I took at the site and everything checks out - all necessary agreements have been signed on app store connect, the subscriptions are in an “approved” state, the product identifiers match, and I’ve waited longer than 24 hours. Has anyone been in a situation similar to this? Do I just need to wait a little while longer?
We’d like to get purchase information about all the users we have in our database. For that, we need to join on the app_user_id. In some cases, it appears as an Alias on RevenueCat. Is there a way to export those aliases, either in the ETL or in the csv exports?
The context is TRANSFER webhook event. I assume the two lists always have the same length. So we have a one-to-one transfer map, like transferred_from[k] to transferred_to[k]. Is my assumption correct?
Hello, Platform: iOS (Swift). Based on: https://www.revenuecat.com/blog/engineering/implement-apple-family-sharing and https://www.revenuecat.com/docs/apple-family-sharing We’ve enabled Family Sharing: set up in App Store Connect ✅ Initialize the SDK as early as possible in your app flow so that transactions in the queue are detected right away. ✅ On the sandbox we tested the following with correct result: Purchase a subscription. Let it expire naturally. Go to Settings > App Store > Sandbox Account > Manage Subscriptions > and subscribe again. This will generate a new transaction that shows up in the queue as soon as you re-open the app. Paywall disappeared as expected ✅We also implemented Restore purchase. ✅ Yet on App Store family members who access the app see the paywall and restore purchase doesn’t help. ❌ We are looking for an advice about what we may be missing here?
Several days ago out App Store Payment Agreement Renewal has expired and we created new one.After this changes purchases works fine in released in store builds.But the same version in testflight or in connected iphone doesnt work.I alredy tried everything.Someone help me pls
Hey,We are building products with an unusual subscription model. I would be interested to know if someone successfully implemented such a subscription model with RevenueCat. I'm also interested to hear about suggestions. We are building apps for iOS and Android where an ‘admin’ user could purchase multiple subscriptions with his AppleID/GoogleID and assign each subscription to a managed user (i.e. with a different AppleID). So we are trying to implement a subscription model with 2 unusual characteristics:Multi-quantity subscriptions Assigning subscriptions to other usersNote that most of our users would only want to purchase 1 or 2 subscriptions, so we can fake multi-quantity subscriptions by creating multiple products/packages/entitlements.Here is how we imagine the flow:The admin user signs in in our app. The app has a custom App User ID to identify this user that we will use it with RevenueCat. The app fetches the packages from RevenueCat. The app receives 6 packages in a single off
Hi person that may help,is it possible for all an app’s features be made fully available to a user, only after a second party “administrator” has approved for that full functionality and the administrator pays for the subscription/purchase?So, the administrator verifies the user and then allows the app user full access (say from free trial access status) and then the administrator pays the monthly/yearly subscription for the user’s access - for multiple users. So that the full App experience is a feature of their relationship.I hope that gives you an idea for what I’m trying to ask/understand - if it is possible, some pointers would be appreciated 😀
Hello!I have an app working perfectly and it's time to implement purchases in it through Revenuecat.However when I install the react-native-purchases library several errors related to Swift are displayed (both when I try from the console and from XCode).The RN version I'm running is 0.63.4, Xcode 13.0 and I'm testing it in simulators/devices with IOS 15.Are there any known incompatibilities with these versions?Some errors I get when trying to compile:Undefined symbol: protocol conformance descriptor for Swift.UInt8 : Swift.FixedWidthInteger in Swift Undefined symbol: protocol descriptor for Foundation.LocalizedError Undefined symbol: method descriptor for Foundation.LocalizedError.errorDescription.getter : Swift.String? Undefined symbol: method descriptor for Foundation.LocalizedError.failureReason.getter : Swift.String? Undefined symbol: (extension in Foundation):Foundation.LocalizedError.recoverySuggestion.getter : Swift.String? Undefined symbol: (extension in Foundation):Foundation.
Hello!We’re testing our app and need to clear all user data and purchase history to test buying products like a new user. How can we do that?I tried to delete customers, but they’re still on the list: http://joxi.ru/krDW8Y7CGwpoZAThank you in advance for the answer.
We use RevenueCat in Observer-Mode and only want to use it for logged-in users.I read the post:It mentions:Only configure RevenueCat with an userId Don’t call logoutThere is one issue with this approach though - if the user logs out and then makes purchases RevenueCat might pick them up. Is there a way to destroy the RevenueCat instance in order to get in a state equal to configure not being called? Maybe calling `Purchases.sharedInstance.close()` when the user logs our?
I’m now transferring my subscriptions to RevenueCat using Observer Mode on the server side and found out that for iOS users I should use the API key for ios and the opposite for Android.Docs says that I shouldn’t use a private API key for my case.Is there any universal API key?
We are seeing a discrepancy between the Revenue numbers that the individual App Store/Google Play stores are reporting and what RC is reporting. The difference is small, only about 2-3%. Could someone give me some insight into why that might be?Is there a timing difference? Is one recognizing discounts and another isn't?
I noticed an error logged for one of the iOS users:"error.code": "0", "error.domain": "RevenueCat.ErrorCode", "error.message": "Unknown error.", "error.nativeStackIOS": [ "0 MyApp 0x00000001042fa810 _ZN8facebook5react11JSIExecutor21defaultTimeoutInvokerERKNSt3__18functionIFvvEEENS3_IFNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvEEE + 254064", "1 MyApp 0x00000001042d180c _ZN8facebook5react11JSIExecutor21defaultTimeoutInvokerERKNSt3__18functionIFvvEEENS3_IFNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvEEE + 86124", "2 MyApp 0x000000010425d280 _ZNK5folly3TryINS_4UnitEE16throwUnlessValueEv + 113116", "3 MyApp 0x000000010425d3b8 _ZNK5folly3TryINS_4UnitEE16throwUnlessValueEv + 113428", "4 MyApp 0x000000010421b280 MyApp + 176768", "5 MyApp
Hello, since today the subscriptions do not work in sandbox! I can get the subscription offers but I can't buy : The receipt is not valid.It's crazy, everything was working yesterday. I even deleted my sandbox user and recreated another one, still the same problem. I also changed the shared secret, but nothing.
HeyIm using subscriptions for both ios and google play through revenuecatToday an androud user reported that he has a new phone and the app keep saying he doesnt have any subscriptions. He is still on the same gmail-account as he did the purchase / subscription withI thought the subscription was following the user and not the device? Thanks for any help :)
I successfully managed to integrate RevenueCat with the Firebase extension, and working properly the events are sent to Firebase. But it’s hard to test some event types so I would like to send events from postman through the Webhook url:{"code":1,"message":"Incoming RevenueCat webhook could not be authenticated. Please check that the shared secret is set up correctly."}I have the shared secret added to header: Authorization: Bearer shared_secret_here (Shared secret is from the google cloud which is connected our app from Firebase)And added the webhook url the same as the Firebase integration webhook.Here is the Firestore rules: The firebase functions integrations are working properly, but I cannot make the same work with webhook, what am I missing? (not even test events)
The difference I know so far is that restorePurchases can be called multiple times but only through user action while syncPurchases should be called programmatically only once every app version.Is there any other differences or they are fundamentally different in what they do?
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.