Get help with your SDK implementation.
- 965 Posts
- 2,999 Replies
Flutter Google Play Version - purchases_flutter: ^3.4.5
I am using purchases_flutter: ^3.4.5 and I am getting this error: “We've detected this app uses an unsupported version of Play billing. Please upgrade to Billing Library version 3 or newer to publish this app. Learn More about Billing Library 3.” What version of this package should I use so I can upload a Google package?
High number of "There was a problem with the App Store"
This error has been occurring frequently for the last few weeks:There was a problem with the App Store I know that this error can occur and what it means, but between January and June 2021 this error occurred 0 times. Since July 2021, about 2-3 times per day. We never do test purchases at this frequency, nor can I believe that Apple is so unstable. Is there a general increase in these error messages or what could explain such a high frequency?
Can I ignore or delete a lifetime purchase made in the App Store sandbox?
Hello! We’re about to release an app using RevenueCat (via the React Native SDK) on iOS. Our app has options for monthly and annual renewing subscriptions, plus a lifetime purchase option. The lifetime option is implemented as a non-consumable purchase in the App Store.The issue we’re having is that once a user has purchased a lifetime subscription in the sandbox, there seems to be no way to ignore that purchase in the future without also ignoring other purchases with the same entitlement. I can manually grant an entitlement for a user, but when I call getPurchaserInfo() in my app, entitlements.active.xyz will contain the sandbox purchase, not the one I granted - the sandbox purchase seems to be taking priority. So either I have to treat sandbox lifetime purchases as valid, or add client code to ignore lifetime purchases made in the sandbox. But if I ignore sandbox purchases, this would seem to have the affect of also ignoring non-sandbox purchases for the same entitlement.This is a co
How to check that user canceled subscription
Hi,How can I check if a user has canceled a subscription or trial?If a user has canceled a subscription, his status is active until its expiration date. It's the same with the trial period. Is it possible to determine it was canceled, but at the same time it is still valid? Thanks
Xcode 14: Build of app works but archive fails
Sorry, title should be Xcode 13, cannot edit this anymore Hi, I am using purchases-ios via Swift Package Manager with the latest version 3.12.4. After downloading Xcode 13 my app builds and runs both on device and simulator.When I try to archive the app in order to upload it to the App Store, I receive the following message:Command CompileSwiftSources failed with a nonzero exit code.The line before saysremark: Incremental compilation has been disabled: it is not compatible with whole module optimizationThere is no other message before or after which gives an indication of what the error could be.The minimum target is iOS 13.I tried to clean the build folder, restart Xcode, restart the Mac, downloaded the project manually from the repository and set it up newly, nothing worked.I am clueless, what can be the problem here?
Flutter: getPurchaserInfo not updated after purchasing a subsrciption
Hey guys!First of all, I am a new customer of RevenueCat and I like it a lot! I upgraded my iPhone to iOS15 and since then I have slight problems with stuff which worked before.When I buy the pro subscription plan in my paywall screen I can’t see the results in the rest of the app using getPurchaserInfo() unless I restart the app. It seems that RC is receiving the info from the cache and for whatever reason it is not cleared with the purchase. Here are the logs:[Purchases] - DEBUG: ℹ️ Products request finished.[Purchases] - DEBUG: 💰 Retrieved SKProducts:[Purchases] - DEBUG: 💰 inv_v03_basis_199_1mo_7d - <SKProduct: 0x282bf4a20>[Purchases] - DEBUG: ℹ️ 1 completion handlers waiting on products[Purchases] - DEBUG: ℹ️ Found 0 unsynced attributes for App User ID: baHJxaHGJdPe9GDjQmkgsxo4cbf2[Purchases] - DEBUG: ℹ️ There are no requests currently running, starting request POST /receipts[Purchases] - DEBUG: ℹ️ API request started: POST /v1/receipts[Purchases] - DEBUG: ℹ️ API request co
It appears adding iOS SDK with Swift PM is broken right now (workaround included)
Hi,I’m new to RevenueCat and just following the Quick Start for iOS.I tried to add the SDK using the instructions but Xcode could not resolve the dependency (tried Xcode 12.5 and 13 beta 5).It seems that since the new 4.0.0 beta SDK released 2 days ago, Xcode can’t resolve it. It defaults to using 4.0.0 as the minimum version and then fails to resolve it.I have managed to work around this by entering 3.12.4 as the version when adding the dependency, but thought I’d raise this in case (a) I’m doing something wrong (don’t fancy using Beta right now so...), and (b) RC are not aware of the problem.
Expo EAS Billing Permissions
Hi, We are using Expo EAS to build our app and looking forward to integrate RevenueCat SDK to our project. In RevenueCat React Native SDK Docs, it is pointed out that we need to add payment/billing permissions for Android and IOS (Link). However, with Expo EAS in Managed, it is not possible to modify xcode and gradle projects. I have seen that some people used EAS successfully with RevenueCat, so can somebody please share how they did the “Android Billing Permission” and “IOS In-App Purchase Capability” configurations? Thanks a lot.
One-time X-years Subscriptions
Hi there,We would love to give our app users the ability to pay one time for a long time subscription (e.g. 5 years) which is not possible by AppStore or Play store. Is it possible to make it happen with RevenueCat? The goal is to pay once for a traceable/trackable subscription where RevenueCat’s purchases SDKs can verifies users’ entitlements for the duration of the subscription. It doesn’t have to be a “subscription” but should be trackable. Thanks in Advance!
How can check that user has grace period?
Hi, there is information in the documentationAlso, if you are user of RevenueCat, grace periods for Apple and Google are automatically detected and handled by our receipt server and SDK. How can I check that user has grace period in this time? I want to show alert for him.Thanks
Prices off by 1 cent (ish)
When I use the price string from the API, we see 12.99 like we have in the Apple app store. However, when I access the price itself in the Flutter client library, I see 12.989999771118164. I am not manipulating this price at all, I am printing it directly from Flutter lib. Do you think this is: 1) Apple weirdness 2) RevenueCat API bug OR 3) Flutter bug?
Is this mandatory to include the Restore Purchase button in the app ?
Hi Everyone,We are handling the restore mechanism with the combination of our local app user id and Revenue cat SDK. So again is this mandatory to show Restore purchase button in the app? For example with the help of app login username and password credentials, we are giving access to Premium features (This reflects to restore mechanism).Due to not showing the Restore purchase button in the app will cause any rejections from Stores (App Store and Play Store)?Thanks for your help.
Upgraded to Xcode 13 RC, and latest RevenueCat package, and now Purchases won't work with watchOS.
I have an independent watch app on the store as part of a family of apps. The watch app is part of a single project with the iOS app. After I upgraded Xcode, my app will no longer recognize the Purchases(now RevenueCat) package. I am using a single class that manages the purchases. If I have it as part of the watch extension it throws errors. If I only target the iOS app, the errors go away. The errors all essentially amount to:'PurchaserInfo' is not a member type of class 'RevenueCat.Purchases'I am also showing an error ofWatch Extension.build/Objects-normal/arm64_32/Settings.dia:1:1: warning: Could not read serialized diagnostics file: error("Invalid diagnostics signature") (in target 'Watch Extension'…Steps I have done:Make sure that the package is linked to the extension cleared the derived data, cleaned the project and restarted.I can find no setting that seems to be a problem. Any help would be appreciated.
purchasepackage is working for monthly subscription but same code is not working for annual subscription
Hi, I am using flutter to implement purchase package. My code looks like ; _purchaserInfo = await Purchases.purchasePackage(packages.first);//print('purchase completed');appData.isPro = _purchaserInfo.entitlements.all["all_charts"]!.isActive; This code is invoked on a click of a button. It works fine for monthly subscription but when I use same code for annual subscription, nothing is happening. I just get following messages; D/[Purchases] - DEBUG(13801): ℹ️ Vending Offerings from cacheD/[Purchases] - DEBUG(13801): ℹ️ Checking if cache is stale AppInBackground false
App crash on purchase in certain countries (Russia, China, South Korea, Thailand, Japan, and Bulgaria)
We’re having an issue that seems to only be present in certain foreign markets. So far, we’ve received reports in: Russia, China, South Korea, Thailand, Japan, and Bulgaria.Everything seems to be working well in other regions.The issue is that when a user selects a package to purchase, whether this individual user is on iOS or Android, clicking to purchase the package, which uses the purchases_flutter library, crashes the app and presents the default error screen. Any ideas as to things we may be doing wrong?
Crossgrades testing on iOS (sandbox)
From The Ultimate Guide to iOS Subscription TestingBecause the sandbox environment doesn’t have a subscription management UI like the production App Store, you’ll need to expose buttons or other means within the app to test purchases that trigger upgrades, downgrades, and cross grades. I’m a bit confused on what to do to test a crossgrade. I have two plans, same level, different duration (annual and monthly). When I test in sandbox switching from monthly to annual, in Customer History I see the renewal events of the monthly one, then the change of renewal preference to annual, but then it stops renewing on either plan. On my I app I end up as if I just cancelled and not subscribed again. Is this expected from the limitations as quoted above? If so, is there anything I can do to test this further or is that enough to assume it will work in production?
Promotional Offers Eligibility
I am implementing App Store subscription (promotional) offers in an app, and I need to implement a check similar as the checkTrialOrIntroductoryPriceEligibility SDK function.This article here suggest I could use an existing entitlement as a means to validate that, however an entitlement could have been acquired in another platform, thus tricking me into promoting an offer Apple will not honor.Apple suggests instead:You can check whether the receipt contains any existing or expired subscription purchases to identify these current or lapsed subscribers.Which seems pretty simple, but the SDK doesn’t seem to expose this kind of information - wether a specific product identifier has ever been purchased on iOS. The raw ReceiptParser also has no public parsing methods I could use. I would have to resort to manually parsing the local receipt, which makes no sense when using RevenueCat.I also see a property called in PurchaserInfo called allPurchasedProductIdentifiers. Could this be used to det
Delay after transferring purchase
Hi there!I'm experiencing some delay on the PurchaserInfo data right after login. I'm using the Transfer Purchase behavior from https://docs.revenuecat.com/docs/restoring-purchases. Problem: PurchaserInfo returns without active entitlements right after Purchases.login()Steps to reproduce:1.With a anonymous user, buy a subscription 2. Now the anonymous user has an active entitlement on PurchaserInfo 3. Log in (Purchases.login()) on a account with no active entitlements 4. Call Purchases.getPurchaserInfo() to check if user has active entitlements Result: The recently logged in user has no active entitlements, even though they should (because of the Transfer Purchase behavior). However, if I call Purchases.getPurchaserInfo() again after 2-5 seconds, then the PurchaserInfo returns correctly, with the user having the active entitlement.To fix this I'm using addPurchaserInfoUpdateListener, so I can observe better the PurchaserInfo changes. But is this delay after transferring a purchase norm
Sign In with Apple + RevenueCat best practices
We are launching a new app that requires users to sign in with their Apple ID (sign in with Apple). Are there any best practices for using the RC purchases SDK in combination with sign in with Apple. One thing I was wondering was if we should rely on the Apple Identity Token as our User IDs or the anonymous user IDs vended by RC. Any insight would be greatly appreciated.
PurchaserInfo entitlements returns empty after logOut
Hi there!I'm testing the login/logout system of the RevenueCat SDK on Flutter.I'm using the Transfer Purchase behavior from https://docs.revenuecat.com/docs/restoring-purchases.Problem: PurchaserInfo entitlements returns empty after Purchases.logOut(). Purchases.getPurchaserInfo() only returns correct after I refresh the app and call Purchases.setup().Steps to reproduce:1. Enter app, call Purchases.setup() (without appUserId). 2. Do a subscription purchase 3. Now with the user with subscription, call Purchases.login(). The user now has a provided app id and has the subscription entitlement. 4. Call Purchases.logOut(). Now the user has an anonymous id. 5. Call Purchases.getPurchaserInfo() to retrieve the user's entitlements and check if the user has subscription. Result: the user has no entitlements, even tho the user bought the subscription on that same device.But…6. Refresh the app and call Purchases.setup(). Now when Purchases.getPurchaserInfo() is called, it returns the subscription
It doesn't show the subscription even though I bought it.
Even though I made a purchase, the membership seems empty. that's why I got a rejection from Review center. At this point I looked at the redirects on the page but it doesn't seem to work.First of all, when I connect it to the ios14 china storekit, everything works correctly through the store kit. Purchases are accurately reflected to RevenueCat. Everything is OK. But things change when I publish the app on TestFlight. We are doing the subscription process, we also get the warning that it has been done successfully. but when we query via RevenueCat right after, we cannot access the membership information. We go and check the revenuecat dashboard, likewise we see that AppUserId is not assigned there. more interestingly, when we try to make a purchase again, we get a warning that you already own this item. Please help
Use a different webhook URL for sandbox and for production
Hi everyone,Is it possible to configure 2 different webhook URLs? We would like to have the sandbox requests to our staging environment and the production requests to production. Otherwise we would need to route the request first to be sent to the appropriate environment on our own.Thanks for your input on this!
Already have an account? Login
Log in to the Community
Authenticate with RevenueCat
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.