Discussion and help from anything related to RevenueCat.
Recently active
Hi all,As far as I can tell from the forums and docs, this is supposed to work in terms of setting some automatic updating of the customerInfo via listeners, but I can’t make it work in my app (React Native android). referring to addCustomerInfoUpdateListener() in this case..https://www.revenuecat.com/docs/customers/customer-info#listening-for-customerinfo-updates Purchases.getCustomerInfo() works but the listener which is supposed to update once the subscription time is over (5 minutes in test mode), isn’t triggering anything. I’m not sure if this really has been resolved or not and would love for someone to point to some working example that I can understand, besides the docs which are relatively minimal for this use case. The only thing I can think of now is to have a 5 minute setTimeout() in my app but that seems far from ideal.. :/
Our testflight apps and local dev app works just fine. The IOS and android version are showing White Screen of Death on visiting screen with Purchases. It worked before but now it doesnt. The app freezes with white screen on each visit of purchase screen by any user.
The title really says it all. Purchases.getCustomerInfo() shows an active subscription even though it expired hours ago. I even tried deleting the Sandbox customer in RC, but it still queries as having an active sub.latestExpirationDate shows "2024-06-03T20:44:00.000Z”. Is there any way to prevent me from having to wait so long for this test sub stop showing as active?
Dear Suuport team, As per check ‘getCustomerInfo’, it work for: - “Test card, always approves” / “Slow test card, approves after a few minutes” and “Test card, always declines” but for “Slow test card, declines after a few minutes”, there is no response status of that case. May you advise in this case? Please kindly check the code below: Future<void> makePurchase(context, String numberOfEgg) async { Map<String, dynamic> payload = {}; List<Map<dynamic, dynamic>> filteredItems = []; bool slowCardApproval = true; try { filteredItems = filterById(numberOfEgg, Platform.isIOS ? products : googleProducts); if (filteredItems.isNotEmpty && !isPurchasePending) { ref.read(purchaseInProgressProvider.notifier).setInProgress(true); payload = { 'identifier': filteredItems[0]['identifier'], 'description': filteredItems[0]['description'], 'title': filteredItems[0]['title'],
I am using EAS Build development IOS (not simulator) and when making a purchase and filling out apple ID sign in info, I get the following error:[Error: There was a problem with the App Store.]I have filled out all forms, agreements, tax info, and bank info on Apple Store Connect.I am wondering why this error is happening. Here is my code to make the purchase: const handlePurchase = async (num) => { try { const { customerInfo } = await Purchases.purchaseStoreProduct(product); console.log(customerInfo); } catch (e) { if (!e.userCancelled) { console.log(e); } else { Alert.alert("Cancelled", "Purchase has been cancelled."); } } };
Any help truly appreciated - a new app has launched today and the dashboard is looking a little strange. All of the figures don’t match, but mainly the New Customers number is 216 and the Active Subscriptions is only 31… any suggestions as to why? TIA
Hey Everyone,I have a problem, I get this Error when I try to fetch Products: Error: There is an issue with your configuration. Check the underlying error for more details.This Happens with Android.I tried to look up the problem but couldn’t find a specific solution. any help from anyone? This is my code:
Hi there,I have checked that my offerings are not nil & I can fetch all other data so far, but the subscriptionPeriod is throwing nil every time & I am stuck at what else to do. import SwiftUIimport RevenueCatstruct PaywallView: View { @Environment(\.dismiss) private var dismiss @State var currentOffering: Offering? var body: some View { NavigationView { VStack { // Header VStack { Text("🌟 My Yarn Pal Pro 🌟") .padding(.top) // Close Button HStack { Button { dismiss() } label: { Image(systemName: "multiply") } .padding(.horizontal) Spacer() } } .ignoresSafeArea()
i can pay in testflight, can't in prod, why?
On latest Expo and react-native-purchases, as far as I can tell everything’s still active and I had a purchase back in February so this used to work. Works fine on iOSconst productIds = Object.values(Constants.expoConfig.extra.products[Platform.OS]);console.log('productIds', productIds); // Array of products output correctly// No console.log() or console.error() gets firedtry { const products = await Purchases.getProducts(productIds); console.log('products', products); // Never outputs setProducts(products);} catch (error) { console.error('Failed to get products', error); Sentry.captureException(error);}
I am setting up a one-time purchase with RevenuecatI have set up subscriptions before, but never a one-time purchase like the “coins” I am attempting to sell now. I am logging “currentOffering?.availablePackages and see the correct product I want to sell. When I run: const { customerInfo } = await Purchases.purchasePackage(currentOffering?.availablePackages?.coins); I get this error: [TypeError: Cannot read property 'identifier' of undefined] Please let me know if you can see what I am doing wrong. Please see the attached screenshot to see what is logging out for my currentOfferings
Hello,I'm currently working on automating an email notification system where users who are on a free trial receive an email automatically 5 days after their initial sign-up. I'm using webhooks for this purpose. Below is the implementation snippet using Node.js, Express, and Nodemailer: require("dotenv").config();const express = require("express");const bodyParser = require("body-parser");const nodemailer = require("nodemailer");const app = express();const port = 3000;app.use(bodyParser.json());const transporter = nodemailer.createTransport({ service: "gmail", auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS, },});async function sendMail({ to, from, subject, html }) { try { let info = await transporter.sendMail({ from: from, to: to, subject: subject, html: html, }); console.log("Message sent: %s", info.messageId); return "Email sent successfully"; } catch (error) { console.error("Error sending email: %s", error); return
Hello, since Tauri v2 now builds iOS/Android apps, and it doesn’t have any In App Purchase support/plugin, it’s possible to implement RevenueCat in Tauri?
Hello,My iOS app features a rather intricate subscription model. Users have the option to subscribe monthly or annually, with each subscription period granting them a specific number of credits (e.g., 100 credits/month or 1200 credits/year). Ideally, customers should receive these credits immediately upon their initial subscription or each time their subscription renews automatically. However, the standard subscription options don't support this functionality with simple settings, necessitating a custom solution on my part as the developer.Firstly, I'm wondering if RevenueCat offers a straightforward solution to implement this subscription model? I've searched online resources but haven't come across any suitable solutions.Secondly, if there isn't a simple solution available, I'd like to outline my proposed approach for addressing this issue and inquire about how I can achieve it with RevenueCat's assistance. My plan involves crediting the users' accounts each time they subscribe or re
ITMS-91053: Missing API declaration For NSPrivacyAccessedAPICategoryUserDefaultsI have updated the revenuecat dependency to the latest 4.41.2Still there is no mention of the Userdefaults usage in privacy report. Can see privacy report on purchase history. Where as Userdefaults comes under additional data. Should we be manually adding it ?
Neither Purchases.getCustomerInfo or Purchases.getProducts display the products.I did the Entitlements and Products on App Store Connect first and then imported them so I know the names are correct. My only assumption now is that I am required to upload the archive build to App Store Connect before this will work maybe.async subscriptionStatus() { try { const customerInfo = await Purchases.getCustomerInfo(); console.log('customerInfo ', customerInfo); } catch (error) { console.log('customerInfo error ', error); } try { const productIds = ['enterprise_sub_v2', 'professional_sub_v2', 'starter_sub_v2']; const products = await Purchases.getProducts({ productIdentifiers: productIds, type: PRODUCT_CATEGORY.SUBSCRIPTION, }); console.log('products ', products); } catch (error) { console.log('products error ', error); } } async restorePurchases() { try { const customerInfo = await Purchases.restorePurchases(
APPLE ID IS SAMEPlease try to understand my situation by an example.We have three plans on App Store.1. one month2. three months3. one yearI signed up as User A and purchased one month subscription successfully.I logged out from User A and signed up as User B and tried to purchase one month subscription, I got error that subscription is already active.Now again tried to purchase three months plan, purchase is successfull but what happened when I again logged in as User A, then his subscription didn’t get renewed. I am not getting any hook to cancel or expire the User A subscription.Is this default behaviour of the app store in-app purchases, Am I missing something or doing something wrong.Is it really not possible to purchase two subscriptions from same Apple ID and both got renew parallely.Please note these all cases are for same Apple ID.
Hi, I an see the 10 latest transactions in the Overview page (https://app.revenuecat.com/overview). How can I see more than 10, and possibly download them in .csv? (via the website or via the API)
Hi! We’re trying to get the subscriber’s IP Address & Country Code more frequently from the rev cat webhook and had a few questions around that. Looking at the docs (https://www.revenuecat.com/docs/customers/customer-attributes), it looks like we can update either `$ipAddress` or an `$ip` property.Which one of these properties would actually show up in the subscriber attributes section of a webhook request? Does it accept IPv6 or does it only accept IPv4 formats? I read in another doc that country code is automatically pulled from the IP. Which one of those properties is looked at when calculating the country code?Thanks for the help!Best,Kevin
Hi There,Is there an easy way to test the subscriptions on TestFlight version and see also the partner integration is correctly working for Adjust? Or do we have to go live with the iOS version on production? Cause this is a bit risky, we have changed all our subscription infrastructure with RevenueCat.And just need to be sure of All Trials, Trial Converted subscriptions cancellations and other events are working well, and also we should see them on Adjust dashboard with our TestFlight version if possible?
Hey, i have configured android base plan with just 1 offer to be trial 7 days but purchase package does not have introductoryPrice information on app store purchases everything works. I have backward compatible base plan but looks like trial is not, why ? I created it last week, is it because of that? In this case how to fix it ? Thanks
*RevenueCatITMS-91053: Missing API declaration For NSPrivacyAccessedAPICategoryUserDefaultsI have updated the revenuecat dependency to the latest 4.41.2Still there is no mention of the Userdefaults usage in privacy report. Can see privacy report on purchase history. Where as Userdefaults comes under additional data. Should I be manually adding it ? Because we will receive automated mail if we upload it without the complete info.
what are the definitions of:New Customers Active UserWhere do the Active Trials & Active Subscription numbers add up to 28 in your system as an “active user” v the 409 that your tile shows?? I could use some help on definitions….
Hello. I’m a bit confused about how to organize everything and was hoping to get some tips for best practices.My app has:Three subscription tiers (Are these “entitlements”?) Basic Pro Platinum Two subscription types for each platform: Monthly and annually (Are these “products” ?) android_basic_monthly, ios_basic_monthly android_basic_annaul, ios_basic_annual android_pro_monthly, ios_pro_monthly ...and so on Feature sets in each tier that inherit features from lower tiers (Are these “offerings”?) Basic: Remove ads, custom avatar Pro: All Basic features plus Feature A, Feature B, Feature C Platinum: All Basic and Pro features plus Feature D and Feature E If the feature sets for each tier are not offerings, then how are they represented in a Revenuecat payload/metada and where can I manage them on Revenuecat?
I’m not seeing the majority of my facebook events coming through on the facebook side, all of the events I’ve checked being sent from RevnueCat are coming from the android app.Was wondering if there’s any special setting needed to send these from iOS? Seems like it should all be handled between RevenueCat and Facebook, all other iOS data is flowing properly.
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.