Discussion and help from anything related to RevenueCat.
Recently active
Unable to end testing for launching app.
Hi there,I’ve been searching for a few days how to implement promoted in-app purchases in my app with RevenueCat. My environment:RevenueCat SDK version is 3.12.2 iOS platform iOS 14 Xcode 12.5.1ResearchI’ve found this question in Github. I’ve also read the SDK reference.QuestionNow, SwiftUI apps launch using a custom struct that conforms to the App protocol, so there is no AppDelegate file anymore. My App struct is something like that:@mainstruct SimoleonApp: App { init() { Purchases.configure(withAPIKey: "KEY") } var body: some Scene { WindowGroup { ContentView() } }}My question is, where do I have to place the following function to support promoted in-app purchases?func purchases(_ purchases: Purchases, shouldPurchasePromoProduct product: SKProduct, defermentBlock makeDeferredPurchase: @escaping RCDeferredPromotionalPurchaseBlock) { makeDeferredPurchase { (transaction, info, error, cancelled) in if let purchaserInfo = info {
I create two different identifier for a non-consumable product for both android and ios.How can I make the product available to other platform if I purchased it in the other one?
Note that developers (you) cannot change a customer's subscription directly. The app stores do not allow developers to upgrade or downgrade a subscription on behalf of a customer. Only a customer can change their subscription.iOSThere are no code changes required to support upgrades, downgrades, and crossgrades for iOS subscriptions in your app. A customer can upgrade, downgrade, or crossgrade between subscriptions as often as they like.According to Apple, when a customer changes their subscription level, access to the new product can vary depending on the new product:Upgrade. A user purchases a subscription that offers a higher level of service than their current subscription. They are immediately upgraded and receive a refund of the prorated amount of their original subscription. If you’d like users to immediately access more content or features, rank the subscription higher to make it an upgrade.Downgrade. A user selects a subscription that offers a lower level of service than thei
Hi!Has anyone a code snipplet for SwiftUI receiving the period of a purchasable Package?My Code:1: @Published var PurchaseablePackages: [Purchases.Package] = []2: ForEach(PurchaseablePackages.indices, id:\.self) { index in makePurchase(ProductID: PurchaseablePackages[index].product.productIdentifier) }, label: { Text("\(PurchaseablePackages[index].product.localizedTitle) for \(PurchaseablePackages[index].localizedPriceString) “) } } How can i add “per month” or “once in a LifeTime”? ThanksWalter
Hey there! I’m gonna to restore user’s purchasesand using this method “Purchases.shared.restoreTransactions { (purchaserInfo, error) in { }” BUT! I’d like check the purchases by Identifier in which indicated in Products, when I address to “purchaserInfo”. How can I implement this?
I have an app that has been available in the App Store for sometime. Many users have made a life time purchase to be ad free.I now wish to convert that payment to a yearly subscription.I have been doing some testing with a prototype app after following the tutorial by Code With Chris.The life time purchase will no longer be an option once I have updated to subscriptionIf a life time purchasers deletes then reinstalls the app after the update they will see the ‘Go Ad Free’ button and the ‘Restore Purchases’ button available to them.Question - I want to understand the behaviour when one of these users taps the ‘Go Ad Free’ button instead of restore.In my testing the App Store response does recognise that the user has already purchased life time Ad Free status and appears to charge them for a subscription. Although the subscription doesn’t appear in the sandbox recent transactions so maybe there is no charge? It would not be clear to the user though.Sorry for the long question. I hope
Curious why there is a 7 day delay on this chart but not on others?
Hello, In the recent months, I notice on my main dashboard that my MRR is higher than my revenue (last 28 days).How does that work? I thought MRR should never be higher than monthly revenue.Cheers!
Hello,I’ve configure a 7 days trial period in subscription in playstore and also an introductory period.getofferings() display price introductory at 0€ for 7 days.The skudetail display "freeTrialPeriod":"P1W". and introductory with the price "introductoryPricePeriod":"P1M","introductoryPrice":"2,49 €"With info offerings, how can I display on paywall the price of introductory after the trial period ?Must I base my info Paywall on sku details?Thank you in advance.
I want to check a user account have active subscription from another device which have different user account? Note: I’m using Flutter
It appears the "Trial cancellation date" filter also applies if a user has cancelled a subscription? For example we have the following filters to show users in the last X amount of days who have started and cancelled a trial. But going through the list there are 3 active subscribers and it looks like each of them... 1. Start a trial2. Let their trial convert into a subscription3. Cancel the subscription but it has not expired
In the following dashboard:https://app.revenuecat.com/overview we can see the number of installs.Unfortunately we were not able to figure out how to retrieve this data related to installs.What would be the best way to retrieve the number of installs since the ETL export only contains subscriptions?
Hey there. Is it possible to access webhooks in sandbox env? The sandbox toggle can’t be activated for some reason. Have anyone experienced it? Cheers Tomasz
We use Mixpanel as our Analytics tool, which has RevenueCat events fired for trial start and trial convert. However, our number of trial starts and trial converts, as well as the revenue in the latter event do not add up to match the numbers in the RevenueCat dashboard.e.g.:May: Trial starts in Mixpanel = 1,573May: Trial starts in RevCat = 1,235^ this is a 21% difference... June: Trial converts in Mixpanel = 574June: Trial converts in RevCat = 521^ this is a 9% difference… The event is from the same source, as we use the Mixpanel in-app purchases integration from RevenueCat https://docs.revenuecat.com/docs/mixpanel I’ve used the data discrepancy article from RevenueCat, which doesn’t include the answer: Any ideas why these are different? This is crucial for our OKRs and revenue tracking
hey folks,we’re facing a bit of a conundrum:On iOS, we offer a 7 day free trial as an introductory offer. However, for some users that come from channel partners we’ve created (iOS 14) offer codes that give users either a 2 week or 1 month free trial. For these offer codes, we’ve set "No, this code will replace the introductory offer”.A few times now, a user who was supposed to use the offer code, instead redeemed the introductory offer 7 day free trial. After they do this, we give them the offer code and when they redeem it, Apple adds the introductory offer 7 day free trial to the 1 month free trial and so they get ~37 day free trial.Is there any way for me to have it change from the 7 day trial to the 1 month free trial instead, instead of going to the 1 week + 1 month?Also, users report that after they redeem the offer code (after initially redeeming the introductory 7 day trial offer), in their Apple ID subscription settings, they see “plan automatically renews at $X.XX/month star
One of our customers make subscriptions and we receive this webhook:{ "api_version": "1.0", "event": { "aliases": [ "$RCAnonymousID:***b501b80f91" ], "app_id": "app1bd0ad1cf1", "app_user_id": "$RCAnonymousID:***b501b80f91", "environment": "PRODUCTION", "event_timestamp_ms": 1627351153536, "original_app_user_id": "$RCAnonymousID:***b501b80f91", "type": "INITIAL_PURCHASE" }} After one hour customer change product and we receive this webhook:{ "api_version": "1.0", "event": { "aliases": [ "$RCAnonymousID:***b501b80f91", "$RCAnonymousID:***776c3a98f0" ], "app_id": "app1bd0ad1cf1", "app_user_id": "$RCAnonymousID:***776c3a98f0", "environment": "PRODUCTION", "event_timestamp_ms": 1627351457649, "original_app_user_id": "$RCAnonymousID:***776c3a98f0", "type": "PRODUCT_CHANGE" }} Why after product change RevenueCAT change “original_app_user_id” from ***b501b80f91 to ***776c3a98f0 and RevenueCAT ID ***b501b80f91 going from “orig
i am using react native in ios it is working fine ,but in android it is not working .could any one help me.but in android other react iap is working componentDidMount() { Purchases.setDebugLogsEnabled(true); Purchases.setup("****************************");}================version i have used============== "react-native": "~0.63.4", "react-native-purchases": "^4.3.0",============error i am getting ,showing it s not connecting with RC but it is working with IAP other pacages==================null is not an object (evaluating 'RNPurchases.setDebugLogsEnabled')at node_modules/react-native-purchases/dist/purchases.js:335:19 in Purchases.setDebugLogsEnabledat App.js:23:4 in componentDidMountat App.js:21:2 in componentDidMountat [native code]:null in commitRootImplat [native code]:null in performSyncWorkOnRootat node_modules/react-native/Libraries/ReactNative/renderApplication.js:54:4 in renderApplicationat node_modules/react-native/Libraries/ReactNative/AppRegistry.js:117:25 in
When I try to fetch PurchaserInfo in flutter application. getting below response. Empty details. No able to find clear documentation or video to understand this. Please help.Details are belowapp type - Flutter - iOS version. Getting this error while running on iOS simulator. Try to run below code in initS method in a screen.Future<void> initPlatformState() async { Purchases.setDebugLogsEnabled(true); await Purchases.setup(<apikey>); PurchaserInfo purchaserInfo; try { await Purchases.getOfferings().then( (value) => print(value.all), ); purchaserInfo = await Purchases.getPurchaserInfo(); print(purchaserInfo.toString()); if (purchaserInfo.entitlements.all['pro'] != null) { appData.isPro = purchaserInfo.entitlements.all['pro'].isActive; } else { appData.isPro = false; } } on PlatformException catch (e) { print(e); } print('#### is user pro? ${appData.isPro}'); } PurchaserInfo{entitlements: Ent
When people makes purchase we get the IP address as well separately, this allow us to do business analysis . What we found that in more than 40% case the location revenue cat showing is wrong. Can you please update your GEOIP database? Maxmind is the best provider in the world
I would like to know how to reset a RevenueCat-enabled Mac Catalyst app's in-app purchase state so that I can test the app's in-purchases with different sandbox users and with local StoreKit testing. Below is a more in-depth description of the issue I’ve had and how I've (so far unsuccessfully) tried to resolve it.(Note: in what follows, references to "app user IDs" are always to the anonymous app user IDs that RevenueCat automatically provides.)Prior to the introduction of local StoreKit testing for in-app purchases, it was useful to have multiple sandbox accounts to test in-app purchases (since a developer could use any one sandbox account only once to test a particular IAP— as you probably know, there's no way to "roll back" a purchase in a single sandbox account to try testing it again with that account).When I wanted to test an in-app purchase with a new sandbox user on the same iOS / iPadOS device on which a previous sandbox user was logged in, the following procedure reliably re
I have disabled sandbox events in slack integration settings.
componentDidMount() { Purchases.setDebugLogsEnabled(true); Purchases.setup("mUQhRkqUFZPTbjuTxjsSts*******");}i am using react native in ios it is working fine ,but in andriod it is not working .could any one help me.but in andriod other react iap is working
Hello,My goal is to buy ads on facebook and track if they eventually triggered installation and purchasing in-app subscriptions.I read a couple of other topics about how tracking works. It seems that fbAnonId is essential for precise tracking. However Facebook SDK doesn’t support macOS platform. How did you solve this problem?I guess there is an opportunity to have an embedded webview that loads their javascript SDK but it seems like an overkill and i’m not yet sure it will solve the problem.How do you track your macos advertising?
I have an app that sell courses as video lectures written in flutter. My app is rejected from Apple Store because I suppose to use in-app purchases instead of an external payment method. Each course has its own price. I’m a little bit rusty about in-app purchases. There is a lot term here with revenuecat: products, entitlements, offerings. Do I need these all? Some courses are non-consumable and has lifetime access.Some courses are subscriptions and has a one time limit. I have a course detail page. When I enter here, I want to check if I bought this course. If yes, I’ll show all videos. If not I want to show a buy button. The prices, id and type(subscription or non-consumable) will come from my rest api. Should I create product id for each course with these information like $courseId1_tier_1, $courseId2_tier_3, $courseId3_tier_1 or I should create product ids in apple and in google and then share the same products ids with rest and rest api should return product id when course detail
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.