Get help with your SDK implementation.
Recently active
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() }, [])
I updated my Swift dependencies in SPM from 3.12.4 to 3.12.7. After I update, I get the “no products registered” error below. Nothing has changed in App Store Connect or in RevenueCat. I don’t get any errors on 3.12.4 My phone is on iOS 15.0.2 2021-10-17 16:03:48.699413-0700 Anime Karma List[1086:198879] [Purchases] - ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "There's a problem with your configuration. There are no products registered in the RevenueCat dashboard for your offerings. To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings. More information: https://rev.cat/why-are-offerings-empty" UserInfo={NSLocalizedDescription=There's a problem with your configuration. There are no products registered in the RevenueCat dashboard for your offerings. To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings. More information: https://rev.cat/why-are-offerings-empty, readable_
Good eveningWe are moving away from calling SK1 directly towards using RC in iOS. We do use SKStorefront. We see the RCStoreFront class in the xcframework but we haven’t found a way to access/init/fetch it. Dead end? Can you point us in the right direction? How to get a RCStoreFront in ObjC Thank you
I have an app that works fine for iOS and Android.I'm currently trying to run an app on macOS.I use Flutter and a package of purchases_flutter 3.9.5Subscriptions work fine on iOS and Android.The macOS application has Capability: In-App PurchaseAfter launching the application for macOS, I get the error:2022-06-01 11:49:28.251 myapp[31721:239951] [Purchases] - DEBUG: ℹ️ Products request finished.2022-06-01 11:49:28.251 myapp[31721:239951] [Purchases] - DEBUG: 💰 Retrieved SKProducts:2022-06-01 11:49:28.251 myapp[31721:239951] [Purchases] - WARN: 🍎‼️ Invalid Product Identifiers - ( "myapp_299_1m_0m", "myapp_3299_1y_0m")2022-06-01 11:49:28.251 myapp[31721:239951] [Purchases] - DEBUG: ℹ️ 1 completion handlers waiting on products2022-06-01 11:49:28.254 myapp[31721:237671] [Purchases] - ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit C
I am implementing paid subscriptions in my iOS app. I have an entitlement called “Pro” in RevenueCat, but this seems to be returned to the app sometimes as “pro” and sometimes as “Pro”. I get the entitlements using Purchases.shared.getCustomerInfo { (purchaserInfo, error) in } purchaserInfo?.entitlements contains one entry as expected, but both the key and the entitlementInfo.identifier are “pro” not “Pro”. However, just after a purchase completes successfully, it is [edit: sometimes] returned as Pro. This is using a sandbox user, if that is relevant.Is this expected behaviour? I suspect not, but can’t figure out what’s going in. Perhaps something to do with caching of user entitlements. Any ideas?
Hey there! I’m currently implementing an “Active Subscription” view in my app and was wondering if I can somehow get the following data from the `CustomerInfo`?Next payment price (the next amount the user will be changed)Active renewal period (if the user is subscribed to weekly, monthly or yearly)Family sharing active (if the active subscription can be shared with the iCloud family)A possible workaround could be to load the products again and search for the `productIdentifier`, but here I’m not sure how I’d find out which price is the due on the next payment (intro offer, discount, etc)Thanks in advance!
My IAP Promotions were being held because my binary “did not include the SKPaymentTransactionObserver method” I haven’t seen anything like this before. I had presumed that this would be included in the Purchases package. Am I missing something, or did Apple? Thanks
Trying to add the RevenueCat SDK as a Swift Package on Xcode 12.3 for iOS on Catalina after specifying dependency rule as suggested the error “because purchases-ios >= 4.0.0-beta.9 contains incompatible tools version and root depends on purchases-ios 4.0.0..<5.0.0, version solving failed” appears . How can work around this?
I am hoping we can get some guidance on how to test billing errors in the sandbox. Specifically, we are never seeing billingIssueDetectedAt populated.As an example, we subscribe using a license tester on Android in our React Native app. The subscription goes through successfully, and afterwards, we set our payment source to “always decline” through Google Play. Because it’s a monthly subscription, we wait 5 min, and when the renewal charge is made, we get an email from Google saying the subscription was suspended because of a billing issue. However, there is no change on the customerInfo object when I call getPurchaserInfo().Fast forward another 5 min, and the subscription is cancelled. This time, if I call getPurchaserInfo(), I immediately see the purchase is no longer active. However, there is still no value for billingIssueDetectedAt, and the expirationDate has not changed either.I guess my questions are:should the above have generated a billingIssueDetected at value? I know the doc
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.