Discussion and help from anything related to RevenueCat.
Recently active
Let’s say I have two products both of which are auto renew subscriptions. Both give the same entitlements. Product A is $10 per monthProduct B is $15 per monthWe offer product A to select customers. Is it possible to migrate a user who has purchased product B to product A? I know I can change the price of product B to match A but I only want to affect this single user.
Is there a way to create a new customer from inside your app (both Android and iOS), without the customer buying anything? The idea is that I can then assign an entitlement for those customers. The above question stems from the following problem. My app operates on a one year subscription basis. However, an organization wants to pay for multiple subscriptions for their participants. I would like to bill the organization separately and allow the participants to access the paid content.
Hello everyone!I’m seeing that there are some differences between the documentation in https://docs.revenuecat.com/docs/ios-products and the iOS product page (https://appstoreconnect.apple.com/apps/xxx/appstore/subscriptions). Is there an ETA for upgrading that documentation?
I have an app defined in the Google Play Store and the goal is to sell subscription. I already have all the products defined in Google Play and Revenuecat. My problem is what to fill in Google Play app price item. Prices are for subscription only. Should I set the price to unpaid? Or paid with zero price?
I get this error when I try redeeming an offer code in a production app. It shows me the screen to enter a offer code and then shows a progress indicator which then leads me to this screen
fetchoffering() is able to fetch the in app products but not able to fetch subscription in android side only. Error logs :- Empty offeringserror log :- DEBUG(32279): ℹ️ API request started: GET /subscribers/6273eb4bda327c735a4b20de D/[Purchases] - DEBUG(32279): ℹ️ API request completed with status: GET /subscribers/6273eb4bda327c735a4b20de 304 D/[Purchases] - DEBUG(32279): ℹ️ PurchaserInfo updated, sending to listener. W/System (32279): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar I/System.out(32279): e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp I/System.out(32279): [OkHttp] sendRequest>> I/System.out(32279): [OkHttp] sendRequest<< D/[Purchases] - DEBUG(32279): ℹ️ API request started: GET /subscribers/6273eb4bda327c735a4b20de/offerings D/[Purchases] - DEBUG(32279): ℹ️ API request completed with status: GET /subscribers/6273eb4bda327c735a4b20de/offerings 304 2 D/[Purchases] - DEBUG(32279): ℹ️ Requesting products from the store with
I switched from the “import Purchases” to import “RevenueCat” module today and am trying to simply call logOut() in my app when the user logs out but it isn’t working….(See images below)Why does the RevenueCat module not recognize logOut()? It is even gives me the option within auto-complete??import RevenueCatRevenueCat.Purchases.logOut() → Error "module 'RevenueCat' has no member named 'logOut'"???
I have a question about the correct way to setup entitlements my app with only monthly recurring subscriptions.There are simply 10 different monthly recurring subscriptions, no yearly option, etc..Of these, the user can only have ONE active subscription and be “entitled” to; Either 1 Ball, 2 Balls, 3 Balls, etc depending on what they are paying for...1 ball = $0.99 per month2 balls = $1.99 per month3 balls = $2.99 per monthetc….10 balls = $9.99 per monthAll of my subscriptions are configured in the *same subscription group* in the App Store so a user can only be subscribed to *one subscriptions at any time*.If the user has NO subscription they can't "play the game" in the app, however the app is a free download.POTENTIAL ENTITlEMENT SETUP 1 (10 Different entitlements)Entitlement 1 = 1 ball $0.99 per monthEntitlement 2 = 2 balls $1.99 per monthetc….Entitlement 10 = 10 balls $9.99 per monthPOTENTIAL ENTITlEMENT SETUP 2 (1 Entitlement)Entitlement 1 = "Can play game" (since user has
I’m confused about what the “New Customers” metric means? Does that mean how many people have subscribed or how many people have viewed the paywall screen?
I’m storing the “point of entry” that turned in a purchase. If entitlements changed I log the point of entryThis approach worked fine for months, but as the app ages, it seems more paid users are returning, and instead of using the restore option, they are actually buying the non-consumable again, so I’m getting more and more false flagsI looked at the entitlement properties, and I expected that checking equals for originalPurchaseDate and latestPurchaseDate might have been the solution. But at least in the sandbox, no changes occur to any of those dates after a repurchase I see purchasePackage returns an SKPaymentTransaction, which has a transactionDate and an “original” property with a transactionDate. So I could probably delay the storing and cancel if I see both of those dates not matching, but I was hoping to keep all the logic in the delegate when purchaseInfo changed
I am following the ‘Magic Weather’ tutorial using Flutter on iOS. I’ve set up the RC project, app, entitlements, offerings and products. When I run the app, purchaserInfo appears to be valid but all of the lists and maps are blank.Any help is appreciated.
I have an application and I would like to integrate it with your API. But my app is old and is in Ionic 3 and Cordova. It is possible to integrate via this documentation (https://docs.revenuecat.com/docs/ionic) as I tried and some errors occurred on my deviceionic infoIonic: ionic (Ionic CLI) : 4.12.0 Ionic Framework : ionic-angular 3.9.9 @ionic/app-scripts : 3.2.3Cordova: cordova (Cordova CLI) : 10.0.0 Cordova Platforms : not available Cordova Plugins : not availableSystem: Android SDK Tools : 26.1.1 (/opt/Android) NodeJS : v10.22.0 (/home/alyson/.nvm/versions/node/v10.22.0/bin/node) npm : 6.14.6 OS : Linux 5.4One of the mistakes:
Hi there,I’m new to developing and I’m trying to implement the purchases SDK for ioS. I’m using xCode and Swift UI.I’ve followed all the steps, I’ve installed via CocoaPods and I can see the Pod.xcodeproj in my xc file. Everything builds successfully. However when I try and use the import Purchase it just says there is No Such module ‘Purchase’. I’ve added In-App Purchase as a capability. In the tutorial I’ve followed it just worked and I’m at a loss as to what to try. ThanksChris
Good morning,We’re looking at the Firebase Integration documentation here : https://docs.revenuecat.com/docs/firebase-integration In the section about setting the Firebase User Identity in RevenueCat. Here: // Add state change listener for Firebase Authentication Auth.auth().addStateDidChangeListener { (auth, user) in if let uid = user?.uid { // identify Purchases SDK with new Firebase user Purchases.shared.logIn(uid, { (info, created, error) in if let e = error { print("Sign in error: \(e.localizedDescription)") } else { print("User \(uid) signed in") } }) } }It is clear that you call logIn when the user id is available. However, why don’t yo call logOut when it is not? Is there a reason? We just want to get our implementation right / complete and from an remote point of view, it feels incomplete. Thank you
I am enabling ASA Attribution by following the guide that says to import iAd then setPurchases.automaticAppleSearchAdsAttributionCollection = truebut the console gives me the warning:[Purchases] - WARN: ⚠️ Tried to post Apple Search Ads Attribution, but Apple Ad Framework is is required for it and it isn't included
Hello!I’m implementing RevenueCat in my application in order to handle user’s subscriptions. I have my own database and I want to set both “premiumLevel” and “expirationDate” (so I can use the benefits of Firestore sockets). I have a few questions:When a INITIAL_PURCHASE event is triggered, I am fetching the newest data in the subscribers endpoint and then getting the user’s id of my own database via aliases. Is that approach correct? When a EXPIRATION event is triggered, I am just updating my own database and setting premiumLevel to false and expirationDate to null (no request to subscribers), is that okay? Do I need to look up for other event types or the INITIAL_PURCHASE and EXPIRATION are enough to keep my database updated?
We have been using the ionic purchases plugin for a while in our project. Recently we have been working on getting offer codes working for iOS. This has not been successful at all.The implementation we have:- We call purchases.login at startup- We listen for purchases.onPurchaserInfoUpdated which triggers when someone makes a purchase (and we unlock based on the entitlements available)- We call purchases.presentCodeRedemptionSheet which pops up the iOS offer code screen- After it didnt work we started listening for purchases.addShouldPurchasePromoProductListener, we thought this might be triggered for the offer codesWe had to test this in production as offer codes didnt work at all in our test environment. Any tips to do this are more then welcome.We have seen multiple things going wrong in the app:- The redeem promo code button (the iOS native part) will go on disabled after pressing it, take a while and then enable again without doing anything- The redeem button works but the sale is
Hi, Revenuecat was previously working well with our app. recently the fetching on SKProducts are flaky, sometimes it fetches all and sometimes subscriptions are missing one or two. I have contacted apple and they couldn’t help me saying the issue is with Revenuecat. Anyone can help?
We have a few subscribers who have had minor issues with the subscription product in our app. As a sign of good faith, we’d like to proactively offer them a free month so they stick around. We’ve seen articles for providing an introductory offer, but our use case seems to be a little different. Month 1: User starts an active monthly subscription (user pays)Month 2: We provide a “free month” so that the user is NOT billed on renewal (user does not pay)Month 3: User is automatically billed again moving forward (user pays) Is there a way to do this while keeping the subscriber active throughout the entire process, and all behind the scenes so no action is needed from their end? Any feedback is appreciated. Thanks!
I have a Flutter app with $0.99 one-time consumable product. Customers start the purchase and cancel it about half a minute later when the Google payment bottom sheet appears. RevenueCat returns:PurchasesErrorCode.purchaseCancelledErrorIt's my first app with revenue, so I have nothing to compare it with. Is it normal that most of the time users start and cancel their payments?
Hi, If we set id “A” as a user app id in RC and set id “B” as a user alias for the same user, is RC will be able to match a user with the id “B” knowing that it is not the user app id?To give you more context, we need id “A” to be set as a user app id as we need this id to be sent to Amplitude. But we also need id “B” to be set for the user as we need to it to match user between different platforms (iOS and MacOS).Could you confirm that it is the order that determine which id is set as the app user id?According to this question, it is the case so it means we should first set id B then id A then. Hope my question is clear, Thank you, Damien
Hello, I have an inquiry regarding the addition of the "Restoring Purchase Products" function. (Appstore has rejected the assessment that it does not have a purchase restore function.)What I'm curious about is1.I wonder if I can use "Anonymous App User IDs".I wonder if I need to designate a user ID.2.Purchases.addPurchaserInfoUpdateListener((purchaserInfo) async {final purchaserInfo = await Purchases.getPurchaserInfo();...}andPurchaserInfo restoredInfo = await Purchases.restoreTransactions();I'm curious about the difference.If the method is different, is there a code to refer to?I am inquiring because it seems to bring the same purchase information.Thank you for reading it.- Notes. flutter app. Purchase or restore purchase after SNS log-in. We do not share subscriptions between platforms.
Hi, I recently conducted a test where I installed via an AppsFlyer Onelink and bought a subscription. In AF, the install is attributed correctly, but the subscription event never showed up (nor the associated revenue). The subscription event and revenue is sent via the RevenueCat integration with AF. Here’s a screenshot of the payload coming from RevenueCat: Why didn't the revenue show up in AppsFlyer? A few final notes: The subscription was a test subscription (conducted via Apple's Sandbox). Notice the event name in RevenueCat is "renewal" (not "subscribe"). That's simply because I've used my Apple ID to purchase test subscriptions before. The way we have the AppsFlyer SDK set up, we give it our own userIds to use. We give the same userId to RevenueCat (and all our tools). You'll see this userId in the RevenueCat payload as "customer_user_id". Notice that the RevenueCat payload doesn't contain the IDFA. Perhaps this is the reason the subscription event isn't attributed correctl
In the image it shows a renewed subscription, right after it shows payment error, but on Google Play it is renewed.The problem is that the user is getting a billing_issues_detected_at warningIt's been two days and there's no equality in the datacould someone help
The following message popped up on our Google Play console on June 2: Changes for users based in the European UnionJun 2, 2022 23:25In light of changes to EU consumer laws, we would like to inform you about important changes to prices and promotions on Google Play for users based in the European Union.Disclosing personalized pricing We've added an API to the Google Play Billing Library that will inform users in Google Play's purchase flow that an item's price has been personalized using automated decision-making. Please reference Art. 6 (1) (ea) of the Consumer Rights Directive (2011/83/EU) to determine if the price you are offering to users is personalized. To inform Google Play of when to add this disclosure you must have the latest version of the Google Play Billing Library (v.5.0) and call the setIsOfferPersonalized() method when an item's price has been personalized for the user.Changes to products & services previously labeled as "free" Going forward you may also notice chang
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.