Get help with your SDK implementation.
Recently active
Hi there, so my app has a few options for subscriptions. A couple of those options have an introductory offer. When my app builds my paywall VC it fetches all my products from Revenuecat and uses them to fill in the regular price from the products respective .localizedPriceString. The setup function then passes through a guard which checks if the user has subscribed before by calling .getCustomerInfo and verifying if both .entitilments.all and .allPurchasedProductIdentifiers are empty. If they both come back empty then the introductory prices are added to my paywall vc as well to be presented to the user.In my own sandbox testing this seems to work fine. I submitted my app for review, and it has been rejected a few times now. The first couple were for other issues so assumed the paywall experience was fine. The Revenuecat customer sandbox account seemed to say so. However I have now been rejected a couple times in a row because my paywall is preseting the reviewer the intro pricing but
I am migrating my Objective-C game project to V4 but can’t get past a ‘Module 'RevenueCat' not found’ build error.I have added the RevenueCat-Swift.h file and referenced it in the Bridging-Header.h file.I have upgraded Pods. @import RevenueCat; causes a build error. Completely stuck.
Hello. I'm interested in understanding how installing the app on a new device with the same app store id is handled when both devices are logged in with different anonymous revenue cat ids. Will the user have to restore purchases every time they switch devices, because of the "transfer purchase" behavior or are the two anonymous ids reconciled by revenue cat as belonging to the same App store id? Thanks!
Environment: iPadOS 14. I understand that when an anonymous user reinstalls and deletes the app, caling Purchases.configure generates a new app ID, and when he calls restore, the purchase is transferred from his old anonymous ID to his new one. What happens to an anonymous user’s ID if he buys a subscription on device A, then restores on device B.Will device A still be logged in?
Hello, I have been using the SDK pretty successfully during testing. Decided to take a break came back 2 weeks later and all of a sudden I am getting “Item not available in your country” error messages when trying to subscribe to any of the subscriptions I have up on my app(APK running on a physical machine at the mo for testing.)The base plan activated for all the products does include United Kingdom and the Google account I am using to make the purchase is also United Kingdom.I’d be more wary of this being my own introduced bug If I was actually changing the code over the last 2 weeks. - hence me reaching out. ScreensError message on display under every subscription available:Google account:Item availability in Google Play Console:Any advice would be greatly appreciated - thanks in advance. David
I integrated RevenueCat into an app written in Swift and SwiftUI. It worked all well until now.All of the sudden Xcode throws these two errors when building the app: Could not build Objective-C module 'RevenueCat'At the import RevenueCat statementHeader 'RevenueCat-Swift.h' not foundIn a modul.modulemapThe Content of the modulemap is as followed.framework module RevenueCat { umbrella header "RevenueCat-umbrella.h" export * module * { export * }} module RevenueCat.Swift { header "RevenueCat-Swift.h" requires objc} The weird thing is, that after rebuilding the app once or twice, the errors disappear.However, if I try to archive the app, they pop up every time and prevent Xcode from archiving the Build.I updated to the lates Xcode version some days ago, beside that there's nothing special that could point to the start of the problem.Any Ideas on that?
Hi,I’ve setup my App Store Connect with a test product and added to RevenueCat too. Also installed the latest version of RevenueCat in my iOS app - now I’m trying to do a test subscription purchase on a physical device from within my app but hitting a problem.I see all the initialisation debug messages from RevenueCat in the XCode debug window - however, when I’m making the call to Purchases.shared.getProducts([“my_product_id”]), RevenueCat is not returning any product back. The SwiftUI code I’m using is pretty much exactly the same as posted by @Michael Eovine in his post from a few weeks ago @ Note: I was hoping the RevenueCat documentation would help provide some useful details but surprisingly there’s only one single mention of ‘getProducts’ (see https://docs.revenuecat.com/docs/ios-native-3x-to-4x-migration#api-changes-1) and it’s in the context of it replacing the ‘products’ call. Can someone from the RevenueCat support team please assist in either suggesting troubleshooting st
In Github https://github.com/RevenueCat/purchases-ios/tree/main/Examples That samples uses:Xcode 12.2 iOS 14 Swift 5There is a example for Xcode 13 or 14 beta working at last stable RevenueCat framework? All official documentation are obsolete at https://docs.revenuecat.com/docs - For example: Purchase module was rewrite to use RevenueCat and a lot of changes.
HI, trying to implement renewable subscription. followed the guide to the tee, I’m pretty sure. good news, android works 100%. tried on apple devices, doesnt work. using the sandbox account I set up on apple connect, it goes through, gives me the success blue checkmark, says your all set, and then a second later I get this black debug screen of death for about 3 seconds and disappears. any help woould be appreciated, thanks
Our app has been approved & now in app store for almost a year without problem with app subscription.Today I tested a new version using sandbox environment, I got the following messages in the log:[BackgroundTask] Background Task 3 ("SKReceiptRefreshRequest"), was created over 30 seconds ago. In applications running in the background, this creates a risk of termination. Remember to call UIApplication.endBackgroundTask(_:) for your task in a timely manner to avoid this.After I got this message, the app is killed by iOS system & quit unexpectedly. The app purchase is never changed since it approved by Apple. The current new version in development hasn’t also been changed.The purchase SDK that I used is Purchases 3.13.1 Are there any leaks in this SDK version? or maybe Apple appstore has introducing new “mechanism” that this version of SDK can’t handle it? Thanks,Dann
I have setup a sandbox account to make purchases using the SDK.My products on AppStore Connect have multiple region prices setMy GBP price is £6.99My USD price is $7.49 (and is displayed correctly in app when I set the store locale as such) When I make a purchase in GBP (shown correctly by iOS SDK) the Event Data shows the correct price value (price_in_purchased_currency) for GBP but the ‘Currency’ is incorrectly in USD.{ "app_id": "app91a2d785de", "app_user_id": "$RCAnonymousID:5cb684d5429346688102439d2892be77", "country_code": "GB", "currency": "USD", "entitlement_ids": [ "Backstage" ], "environment": "SANDBOX", "event_timestamp_ms": 1655385097458, "expiration_at_ms": 1657977095000, "is_family_share": false, "offer_code": null, "period_type": "NORMAL", "price": 6.99, "price_in_purchased_currency": 6.99, "product_id": "backstage_monthly", "purchased_at_ms": 1655385095000, "store": "APP_STORE", "takehome_percentage": 0.7, "transaction_id": "StoreKitTest_Transactio
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 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
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?
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.
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
We’re looking to use RevenueCat across our native Swift iOS app, Electron Mac app, and React web app. Currently all of our subscriptions have been managed via Stripe.Is there a best practice around how to integrate on the Electron app? We’re assuming Electron should behave similarly to web and use the Stripe Checkout integration or the RevenueCat REST API, but just want to make sure we’re on the right track before continuing.
We recently launched our app and have a monthly subscription plan with a free trial.In both playstore and appstore we did set up free trials/introductory offers and are applied for all countries.For some reason, users in the UK do not see the free trial in the payment sheet and they are charged right away. Our dev team is in Serbia and we do see the free trial.Looking at this https://docs.revenuecat.com/docs/ios-subscription-offers free trials are handled manually.Sounds similar to thisWe are using react native 4.5.3.Any ideas what we are doing wrong?
Hello all,I’d like to check the originalApplicationVersion for my iOS app, without prompting the user to login to their AppStore account.Your “converting a paid iOS app to subscription” blogpost has the following code, which looks like it should do what I want:if let receiptURL = Bundle.main.appStoreReceiptURL, let _ = try? Data(contentsOf: receiptURL) { Purchases.shared.restoreTransactions { (info, error) in completion?(info) }} This implies that it’s safe to call restoreTransactions if we’re certain that there is a receipt on the device.However, the (recently renamed) restoreTransactions function has a refresh policy of .always, which I suspect might prompt the user to login.So my questions:will restoreTransactions ever prompt for AppStore login if there is a receipt on the device? if that function might prompt, is there a reliable way to get originalApplicationVersion from an on-device receipt without prompting?Thank-you! Matthew
hey guys good morning i am having this issue and couldn’t figure out. I am using the new SDK("react-native-purchases": "^4.5.3"), and also EXPO MANAGED FLOW("expo": "~44.0.0"), all updated.evaluating RNPurchases.isConfiguredThis is my code:useEffect(() => { const connectRevenueCat = async () => { Purchases.setDebugLogsEnabled(true) if (Platform.OS === 'android') { console.log('entrou 3') await Purchases.setup('mypass', 'null') } } connectRevenueCat() const getPackages = async () => { try { const offerings = await Purchases.getOfferings() if (offerings.current !== null) { setProducts([offerings.current.availablePackages[0].product]) } } catch (e) { // put this on screen to version 18 setError(e?.message + 'O meu errinho do bem') } } getPackages() }, [])
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.