Discussion and help from anything related to RevenueCat.
Recently active
XCode: Version 13.0 (13A233)macOS Deployment Target: 11.0Install via Swift Package ManagerWhen I compile it prompts: No such module 'Purchases'
Hi.Why is the number of “Active Subscriptions" on the "Overview" page different from the number of "Active Subscriptions" on the "Customers" page? I checked, no customer has more than one subscription. How can this be possible?
Hi everyone,I just released a new version of my app on the App Store. When users who are already subscribed download and update to the new version, they’re getting my “Subscribe Now” paywall.If they tap “Restore Purchases”, then it correctly restores the purchase and shows that they are now subscribed. My app doesn’t have user authentication, so I’m relying on RevenueCat to generate a random App User ID. This is how I’m instantiating the RevenueCat SDK:Swift: // *** Configure RevenueCat in-app purchases *** //Purchases.logLevel = .debugPurchases.configure(withAPIKey: API_KEY_HERE, appUserID: nil, observerMode: false, userDefaults: UserDefaults(suiteName: "NAME HERE"))Purchases.shared.delegate = selfI’m guessing what’s happening is when a user updates the app and opens it, the app instantiates the RevenueCat SDK and generates a new anonymous ID, which isn’t aliased back to the original subscription unless they tap “Restore Purchase” first. My question is--- is there any way to do this
I dropped a full day on the “could not get offerings” issue that a lot of other people have experienced. The main cause of this was misleading/lacking documentation in the IOS Product Setup guide here.At the top of the document, it says: Make sure Paid Applications Agreement is signedBefore you set up your products, make sure you have the latest Paid Applications Agreement signed in in the "Agreements, Tax, and Banking" module in App Store Connect. You will not be able to test in-app purchases until the latest version of this agreement is signed with Apple. This is partially correct, which, in many people’s cases, means that it’s incorrect. You must also 1) fill out all the tax documentation, and 2) submit a bank account and have it approved. This was not clear to me, so I spent forever tracking down the error.Later in the guide it says: If you don't see the Subscriptions option, ensure your developer account has accepted all applicable contracts and have provided tax and banking info
Hello, i searched for a similiar bug, but did not encounter anyone else posting. Here’s what happened, my offer code redemption sheet was working as expected for months, but recently, it stopped showing the price. I don’t know if it helps, but my currency is configured in Brazilian reais ( R$ ). The offer code is recognized but the text says: ( translated )“1 year per offerPrice, then R$ 239,90/year. ”offerPrice is in bold because it was supposed to be the final price the user would pay
I have an existing RevenueCat implementation in SwiftUI using the Purchases SDK 3.14.1 in production.I am currently in the process of upgrading to the latest RevenueCat SDK 4.17.8 and am therefore reconsidering my design choices and looking for best practices / guidance on how to implement an ObservableObject for SwiftUI with Swift concurrency (async/await) using the latest RevenueCat SDK.I have a single entitlement (“premium”) in my app for which I want to broadcast its subscription status through a @Published boolean variable in the ObservableObject, similar to the ‘MagicWeatherSwiftUI’ example provided by RevenueCat:@MainActorclass PurchasesManager: NSObject, ObservableObject { static let shared = PurchasesManager() @Published var customerInfo: CustomerInfo? { didSet { subscriptionActive = customerInfo?.entitlements[Constants.RevenueCat.premiumEntitlement]?.isActive == true } } @Published var subscriptionActive = false private override init()
This seems to be a common ask for help, but Purchases.getOfferings() is not working for me with the error `None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect`. It’s a situation like this other thread (among others), but I think I’ve double-checked all the things to watch out for.Specifically, I had RevenueCat working with my app, which right now is in beta so at most some folks are testing it via Testflight - RevenueCat could retrieve the products then. I then decided to create a dev version of my app using a different bundle ID so that I could simultaneously have the Testflight version and the Expo development build on my phone.Now, Purchases.getOfferings() is working fine on the Testflight version (which has my original bundle ID) but not on my development version (with the new bundle ID). Things I’ve checked:The development build of my app has the new bundle ID I have created a new app in App Store Connect using that new bundle ID I h
Hi,I’ve had two crashes from removedTransactions. Any thoughts on what it might be?thanks16.3.1 (20D67)iPhone 11
I just wanted to report an incorrect code snippet in the iOS subscription offers documentation. I spent several hours trying to debug why it wasn’t working for me in React Native, so it would be helpful if this could be fixed so it can benefit others in the future. Here is the documentation page in question The error is only present in the React Native code snippet provided:This function is undefined because it does not exist in any version of react-native-purchases. I uncovered this issue when I checked the other tabs of the code-snippet and searched inside the /src/purchases.ts file of the react-native-purchases package, and found that there is no method called “getPaymentDiscount”. This line is supposed to be:const paymentDiscount = await Purchases.getPromotionalOffer(product, product.discounts[0]);Note: getPaymentDiscount is replaced by getPromotionalOffer. I have tested this code and after providing the product and discount from the package, I was successfully able to call:Purchas
I want to make a subscription similar to this example:I want a person to subscribe to a purchase of 10 monthly apples, but if he eats all 10, the first day the user can pay for a subscription of 20 monthly apples.Do I have to cancel the old subscription and create a new one?In the example above, as I tell the stores and RevenueCat, that the 30-day subscription is no longer valid because its apples have already been consumed and that a new subscription of 20 additional monthly apples will have to be created.
I am trying to implement a monthly subscription as part of an in-app purchase. I am using a combination of xcode/swift and RevenueCat to implement this feature. In implementing the code that runs when the user clicks the purchase button i get the error saying "Fatal error: NSArray element failed to match the Swift Array Element typeExpected Package but found RCPackage". Where the code for the purchase button click is highlighted. Code is "guard let package = offerings.all.first?.value.availablePackages.first ".I am not sure what to do to fix this issue.
My team is currently looking into porting our Android and iOS app to a Windows standalone version (eg. for Steam), and I was wondering what the options are for communication between mobile and standalone. For example, a user would download our app on Android and start a subscription. Later, the user would download our port for Windows (logging back into his original account) and now wants to continue accessing his subscription features.
Hello everyone!I’m facing an issue that everyone has faced, I can’t fetch any of products(subscription) that is registered on app store connect and even in revenue cat. I had checked all my code, no errors, I even read this article but anything has solved my issue.I’m using React native to code the app, and I don’t know if Purchases.configure is working correctly.I want to know where can I read logs to debug, I set this method : “setLogLevel(Purchases.LOG_LEVEL.DEBUG)” because another method(“setLogenabled” something like this) was deprecated but I don’t know where do I could check for every logs with revenuecat and debug the code.Kinds regards.
Hey friends! I have recently released an app on open testing (beta). When my users purchase a subscription, the google play initiates the purchase, the payment gets processed and the money gets deducted. After successful payment, it gets redirected to the app and the subscription is not seen active on the app. When i try to pay again for the subscription the playstore says you already have an active subscription. The transaction is shown on the play console dashboard also. But there is no update in the revenue cat. The customers list remains zero on my revenue cart dashboard. What should I do now?
After receiving an email from Apple about their new ‘Base price’ functionality for In App products I have adopted prices accordingly and set the base prices. However...Now ‘getOfferingsWithCompletion’ no longer delivers those products to my app in Sandbox mode, but it (still) does in Production mode at the moment. I have not changed any IDs, all contracts are signed, I checked that everything is fine, but still no luck.All I have changed in App Store Connect is: enabled Base Price functionality for the products, adopted prices accordingly. Absolutely no other changes, neither in my code, nor on App Store Connect.Anybody else seeing this? Any help is much appreciated.Console output:2023-03-10 14:02:20.935490+0100 my3E[16682:3200389] [Purchases] - DEBUG: ℹ️ No existing products cached, starting store products request for: ["my3e_tip_2", "my3e_hide_nag", "my3e_01months_ar_nfs", "my3e_12months_ar", "my3e_tip_1", "my3e_12months_ar_nfs", "my3e_tip_4", "my3e_tip_3", "my3e_01week_ar_nfs", "my3
Apple limits the data they share with their offer codes, so the customers appear with $0 revenue in RevenueCat.How are people working around this? Wondering if we should set up a webhook for the data, or just rely on Apple’s reports, or something else?
I want to have a system like netflix where I ask users to log in with email and using my custom auth backend, store the user info. So user logs in on iOS device and purchases the subscriptions, and now can login to android device and get access to pro features (or vice versa). Achieving this so far is not the problem. The problem comes with the discrepancy where the source of truth of purchases is linked to the android or iOS account and not my app’s login.So imagine, customer A logins in android device with email - abc@email.com, and is also logged in his android id with the same email id, which is fine. But now if he logs out of my app and then log back in with another email id, say xyz@email.com, technically he should not have pro subscription. and since RC also stores both these users as separate account, the data I get from RC treats the user with xyz@email.com as a non-pro user.But now if the xyz@email.com tries to purchase the subscription, he will get an error saying - You’re a
Hi, I’m getting an error when trying to retrieve offerings from my StoreKit config file when running my unit tests. Current Setup: Tests scheme with a Unit test host app as the executable. RevenueCat Error: [Purchases] - ERROR: 😿‼️ There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More information: https://rev.cat/why-are-offerings-emptyUnderlying Storekit Error:[Default] [StoreKit] Failed to get products through appstored in simulator, will try using appstoreagent on host mac: Error Domain=ASDErrorDomain Code=950 "Unhandled exception" UserInfo={NSLocalizedDescription=Unhandled exception, NSLocalizedFailureReason=An unknown error occurred}Please can someone advise what might be going wrong here? Thanks!
If yes do I need to configure it somewhere in Play Store Console ?
Hello! I have published my subscriptions in Google Play store recently.During the testing - the subscriptions appear correctly in RevenueCat sandbox. The subscription also appears in RevenueCat when I use release version of the application that’s downloaded from the Play Store with my test account.On the 31th of Oct there was a first subscription purchase by a real user and the purchase appears in Google Play. But there is no sign of this purchase in RevenueCat and also no sign of this purchase in my analytics where I log the purchase when it is received from RevenueCat callback in Android. I’m afraid that the user has paid for the subscription and didn’t receive its value due to RevenueCat not receiving the info about the purchase.I’d value some suggestions for investigating the issue and understanding what exactly is happening. Thanks in advance.
I set up USER_ID to the Purchases.sharedInstance.logInWith() method and then SDK response created parameter always return false.
Hello,I am using the ionic sdks. However for some reason i get the error“There is no singleton instance. Make sure you configure Purchases before trying to get the default instance.”I am using the code below and as you can see I am calling Purchases.configureWith before Purchases.getCustomerInfo(). But not sure why I am getting this error?Can anyone guide as what I am doing wrong?Also attaching screen of my consolePurchases.setDebugLogsEnabled(true); if (context.user) { console.log("before configure"); Purchases.configureWith({ // @ts-ignore apikey: import.meta.env.VITE_RC_ANDROID_KEY, appUserID: context.user, }); console.log("after configure"); try { console.log("before customerinfo"); const customerInfo = await Purchases.getCustomerInfo(); console.log("after customerinfo"); console.log(customerInfo); } catch (e) { console.log(e);
Hello,How could I get alias for a purchased user from CustomInfo model class? I looked it up and just found `originalAppUserId` and cannot find any alias fields.I invoked Purchases.getCustomerInfo(), but I can’t find alias here.Please help me!
HiI have set the RC id linked to my users accounts’ unique identifiers and I thought that was ok. So the RC accounts are linked to my app accounts (a user, theoretically could have one account with subscription and another without it, imagine like a user having a professional Dropbox subscriptions and a personal one accessed via the same device)But after an Apple rejection when they asked me to make possible that users conserve their subscriptions even if they upgrade phone, then I’m questioning myself if this is the right approach. It seems that, as subscriptions can only be cancelled via the stores menu, then all the accounts accessed via the same device would act the same.Is this the “standard” way to make it work? Subscriptions linked to Stores accounts and not to my-app accounts?I don’t have a preference, 99.9% of the cases my users will have just one account. I just want to make my app compliant and to make it work in the standard way.
RevenueCat returns an AnonymousID for originalAppUserId instead of the UUID I send it. After the purchase I login to RC with the UUID(RC returns an anonymous ID). Also, at startup after logging in with the UUID in didFinishLaunchingWithOptions, RC returns the same anon ID in the purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) callback.This has a material impact on the use of my multi-user app since I depend on the uuid userId to determine many aspects of the app state.How can I ensure that RC returns the user ID that I gave it?Here’s how I initialize RC at startup in didFinishLaunchingWithOptions: let configuration = Configuration.Builder(withAPIKey: "asdf") .with(appUserID: currentClientUser.id) .with(usesStoreKit2IfAvailable: false) .build()Purchases.configure(with: configuration)Purchases.shared.logIn(currentClientUser.id) { (customerInfo, created, error) in os_log("Purchases.shared.logIn customerInfo: %@", log:
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.