Get help with your SDK implementation.
Recently active
I added the react-native-purchases package of my react native project. When i run eas build it fails with the following error: (ios/Pods/RevenueCat/Sources/Identity/CustomerInfoManager.swift:192:29) 190 | 191 | @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *)> 192 | var customerInfoStream: AsyncStream<CustomerInfo> { | ^ 'AsyncStream' is only available in iOS 15.0 or newer 193 | return AsyncStream(bufferingPolicy: .bufferingNewest(1)) { continuation in 194 | if let lastSentCustomerInfo = self.lastSentCustomerInfo { 195 | continuation.yield(lastSentCustomerInfo)
My app works fine at local testing on simulator and real device but when i upload my app to testflight then i am unable to purchase the subscription. I have read all the documentation and related articles but unable to resolve it. Please give me suggestion how i resolve it. Thanks
My iOS SwiftUI app is in Testflight, everything seemed OK, but since this weekend, there is this strange behaviour. When the app is run for the first time, everything works fine. But on second run (and all subsequent runs), offerings are not shown.If the app is deleted from device and reinstalled, the issue repeats: first launch shows offerings, second launch does not.______ Console ____________2022-03-20 21:32:45.986445+0100 AppName[12345:1234567] [Purchases] - DEBUG: 👤 Identifying App User ID2022-03-20 21:32:45.988665+0100 AppName[12345:1234567] [Purchases] - DEBUG: ℹ️ Debug logging enabled2022-03-20 21:32:45.988708+0100 AppName[12345:1234567] [Purchases] - DEBUG: ℹ️ SDK Version - 4.2.0-SNAPSHOT2022-03-20 21:32:45.988732+0100 AppName[12345:1234567] [Purchases] - DEBUG: 👤 No initial App User ID2022-03-20 21:32:45.991893+0100 AppName[12345:1234567] [Purchases] - DEBUG: ℹ️ Sending latest CustomerInfo to delegate.2022-03-20 21:32:45.992082+0100 AppName[12345:1234567] [Purchases] - DEBU
Why the prices (package.localizedPriceString and Apple payment confirmation pop up) different ?I use package.localizedPriceString to show prices. I’m using pod RevenueCat (4.11.0)iOS 16.0.2 iPhone Pro Max
Hello, I’m trying to implement the SDK in Capacitor using the Cordova plugin for iOS, but whe in run the configureWith method nothing happens and I found the following log in XCode: CDVPlugin class CDVPurchasesPlugin (pluginName: purchasesplugin) does not exist.Error: Cordova Plugin mapping not foundI’ve tried with multiple versions of the plugin with no success
I have an existing app that I am upgrading to use RevenueCat. If the current version of the app (non-RC version) is installed then you upgrade to the revenueCat integrated version in the logs I see the following error: [Purchases] - DEBUG: ℹ️ CustomerInfo cache is stale, updating from network in foreground.[Purchases] - DEBUG: ℹ️ Network operation 'GetCustomerInfoOperation' found with the same cache key 'FB1D5F41-6C6F-4...'. Skipping request.[Purchases] - ERROR: 😿‼️ There was a problem related to the customer info. Requested a cached CustomerInfo but it's not available.[Purchases] - ERROR: 😿‼️ There was a problem related to the customer info. Requested a cached CustomerInfo but it's not available. I’m guessing this error is just shown because I asked for a cached version of the CustomerInfo in my code but there wasn’t anything in the cache? I’m wondering if this error is benign or something I need to fix? Seems strange this would be logged as an “ERROR” if it wasn’t important vs. j
Hi,Apple requires apps to provide the users with a way to delete the accounts they have set up in the app. I guess it does not only apply to the id in our login system, but also the associated information on RCat.Is there a way to remove the user id and other data from RCat altogether, using iOS/Android SDKs? I might be dumb, but I can’t find anything in the reference.Thank you :)
On my React-Native app, which is configured with RC, tested and working completely fine on development builds and .apk installations, the purchased subscriptions expire after 5 minutes and do not auto-renew with revenuecat.Also, if you try to purchase the item again google play store throws an error indicating the user is already subscribed. Strangely, the issue only arises in closed testing signed .aab build from the google play console. On .apk’s and dev-builds the subscriptions auto-renew without any issues, and the “active” array remains with the purchased subscription. The issue seems to be on the side of the revenuecat api, which for some reason returns an empty “active” array after the 5 minutes have expired on the production builds. Is this expected behaviour in .aab build/closed testing environments? Apologies if that’s the case, I’ve been looking at the documentations and forum posts, there doesn’t seem to be anything written about this. Below are the screenshots of the app,
Using react-native-purchases v5.0.2 and I can’t seem to get Purchases.addCustomerInfoUpdateListener to fire when I make a purchase (it’s not a subscription in case that matters). Testing in both simulator and a device and neither seems to work.I have a hook to track “premium” status and I want my tab view to automatically update when premium is unlocked from a different screen. I could hack in a manual call to `getCustomerInfo` when a screen regains focus but this is error prone so I’d really like to avoid it. Also, in case it matters. The documentation mentions:This will fire whenever we receive a change in purchaser info on the current device and you should expect it to be called at launch and throughout the life of the app.But I’m not seeing it “called at launch” either. Any help here is greatly appreciated.
I’ve encountered an issue using Xcode 14 beta 4. Updated to RevenueCat 4.9.0 and still seeing the issue. If I use a StoreKit config file with an iOS 16 simulator, when I attempt to make a purchase, the iOS pay dialog never appears and I get RevenueCat.ErrorCode Code=1 "Purchase was cancelled." If I switch to an iOS 15 simulator, it works fine. If I switch to a different scheme that doesn’t use StoreKit, I get the iOS dialog to sign in. If I try this on my own iOS 16 device, it works fine. It seems to only be an issue while using the simulator with iOS 16. Here is what I get when I print out the error.Error Domain=RevenueCat.ErrorCode Code=1 "Purchase was cancelled." UserInfo={source_file=RevenueCat/SKError+Extensions.swift:33, source_function=asPurchasesError, readable_error_code=PURCHASE_CANCELLED, NSLocalizedDescription=Purchase was cancelled., NSUnderlyingError=0x7f85d1a9e2e0 {Error Domain=SKErrorDomain Code=2 "(null)" UserInfo={NSUnderlyingError=0x7f85d1a9e260 {Error Domain=ASDErro
The sample app is pretty light when it comes to restoring purchases: Button("Restore Purchases") { Task { try? await Purchases.shared.restorePurchases() } }There are 3 possible outcomes when it comes to a subscription:Success Failure due to lack of active subscription ErrorI want to be able to show an alert of sorts in all 3 cases.My view has two variables:@Environment(\.isPremium) var isPremium@EnvironmentObject var customer: CustomerWhere customer is Purchases’ delegate and has the CustomerInfoand isPremium derives its value from that customer, an @ObservedObject of my app:.environment(\.isPremium, customer.isPremium)The button to restore looks like this. Button(action: { isRestoringPurchase = true Task { do { let _ = try await Purchases.shared.restorePurchases() } catch {
Hi there, May you please assist. Im am using purchases_flutter: ^4.3.1 ❯ flutter --versionFlutter 3.3.6 • channel stable • https://github.com/flutter/flutter.gitFramework • revision 6928314d50 (6 days ago) • 2022-10-25 16:34:41 -0400Engine • revision 3ad69d7be3Tools • Dart 2.18.2 • DevTools 2.15.0 The issue is -After filling in apple id + passwordClicking on either ‘Cancel’ or ‘Ok’ I always get the error below PlatformException(1, Purchase was cancelled., {userCancelled: true, code: 1, message: Purchase was cancelled., underlyingErrorMessage: , readableErrorCode: PURCHASE_CANCELLED, readable_error_code: PURCHASE_CANCELLED}, null) I am OKAY with getting the exception when user clicks cancel, but I don’t understand why I get the error when user clicks OK Please note: Android implementation working fine. Only iOS affectedAlso all offerings displayed on screenshot below are coming from RevenueCat without any issues.
I have installed cordova-plugin-purchases on my app which works fine on the android version.But on IOS while i am following all the documentation on both physical device and simulator and while my setup seems ok, i cannot trigger any purchases related action/function.I did all the stuff described here: Testing purchases in App Store SandboxThe actual behavior seems like all plugin functions are empty of code.I do not get either a success or an error callback at all from whatever method i ‘ve tried to call.I have tried in both actual devices and simulator with xcode builds.If needed i can post sample code.
A long time ago we implemented in app purchases in our application through RevenueCat and it was working fine until we got this two issues from users.1)First -errorCode: PurchasesErrorCode.storeProblemError,details: {code: 2, message: There was a problem with the App Store., readable_error_code: STORE_PROBLEM, userCancelled: false, underlyingErrorMessage: An unknown error occurred, readableErrorCode: STORE_PROBLEM},It appears in logs when users are trying to press "subscription buy button".We didn’t touch any implementation of this and configuration in App Store Connect or RevenueCat so it’s just happening for some reasons of App Store?Also, maybe this information will be helpful - previous build was rejected in first attempt because of ‘cannot locate iAP’ after build was approved but in this build appeared this issue. 2)Second - errorCode: PurchasesErrorCode.ineligibleError,details: {code: 18, message: The User is ineligible for that action., underlyingErrorMessage: User is ineligible
Our company is working on healthcare educational software that allows users to pay for multiple years via Stripe. While this is not the norm in software, it is somewhat normal with healthcare and educational software. From what I can tell, RevenueCat does not allow entitlement or subscription modification of any kind, nor does it allow manual assignment of entitlements (outside of a one-year promotional entitlement) via the API.Is there any way to programmatically grant/modify a user’s entitlement with RevenueCat, or expire a user’s entitlement via the API?
I am trying to submit an update to my Flutter app to Apple, but it has been rejected a few times now.Initially the error was during restorePurchases(), the error was a PlatformException:PlatformException(0, Unknown error., {readable_error_code: UNKNOWN, code: 0, userCancelled: false, underlyingErrorMessage: The receipt is missing., readableErrorCode: UNKNOWN, message: Unknown error.}, null)Following the RevenueCat docs about missing receipts, I asked the reviewer to re-login with their Apple account, but the issue persisted. Then a similar issue occurred when the reviewer saw that they could still purchase the product, and so pressed purchase:PlatformException(9, The receipt is missing., {underlyingErrorMessage: , readableErrorCode: MISSING_RECEIPT_FILE, readable_error_code: MISSING_RECEIPT_FILE, code: 9, message: The receipt is missing.}, null)According to this Apple tech note (outdated?): “The absence of the appStoreReceipt is typical when the application is installed using Xcode or
Success building iOS RevenueCat Framework 4.11.0 and earlier (Xcode 13.2.1 13C100)Fails with errors building iOS RevenueCat Framework 4.12.0 and after (Xcode 13.2.1 13C100)Reproduction: Empty project (iOS ‘Application’ template) with RevenueCat framework added via File > Add Packages. No additional changes or code.(Xcode 13.2.1 is the final available for MacOS BigSur 11.6.5)Suggestions? Sample errors (see attachment): purchases-ios/Sources/Support/ManageSubscriptionsHelper.swift:37:78: error: converting non-sendable function value to '@MainActor @Sendable (Result<CustomerInfo, BackendError>) -> Void' may introduce data races fetchPolicy: .cachedOrFetched) { result in ^ purchases-ios/Sources/Misc/OperationDispatcher.swift:58:47: error: converting function value of type '@MainActor @Sendable () -> Void' to '@convention(block) () -> Void' loses globa
Hi,I don’t know why I am getting this error. It was working well before on iOS, except on catalyst.Then I’ve broken all this!Purchase failed. Error Domain=RevenueCat.ErrorCode Code=0 "Unknown error." UserInfo={source_function=purchase(sk2Product:promotionalOffer:completion:), NSUnderlyingError=0x600001be9080 {Error Domain=RevenueCat.ErrorCode Code=8 “The receipt is not valid." UserInfo={source_function=convertUnsuccessfulResponseToError(), Note that after purchasing the product I see a message saying: “You’re all set, your purchase was successful.” Do you have an idea where to look at?I triple checked all keys & config. (bundle id, shared secret, ...) Thanks
I'm trying to make a purchase using the method below, it prompts me to enter the password, it works fine but the completion block is never called. It seems to be a bug in iOS 16, because in iOS 15 everything works as expected.I'm using this code to make the purchase: [[RCPurchases sharedPurchases] purchasePackage:obj withCompletion:^(RCStoreTransaction *transaction, RCCustomerInfo *customerInfo, NSError *error, BOOL cancelled) { }]; How do I enable the StoreKit 2 in Objective-C? Maybe it will work using StoreKit 2. Thank you!
I have configured the revenue cat react native SDK. The products are configured in the offerings sections and they are getting fetched properly. All good until this moment. Once I clicked Buy now, The popup of Apple login opens up and after adding sandbox user credentials It says “purchase success-full” with “tick” sound on physical Iphone.Once that’s done, I get new popup saying “You are all set mode:[sandbox””. After dismissing this popup my app freezes. Nothing happens. Even I am not getting the `custmer_info` or `puchase_info` after the successful purchase.Please help try { Purchases.setDebugLogsEnabled(true); console.log("initiated purchase") // this will execute const purchaseData = await Purchases.purchasePackage(incomingPackage); console.log("purchaseData", purchaseData); // not getting this line console.log("done puchase") // not getting this line } } catch (e) { console.log(JSON.stringify(e, null, 4)) // this also doesn't execute
I’m currently unable to create builds in Unity for Android because RC/Gradle fails to resolve its dependencies from jcenter. As jcenter becomes unreliable the more time passes and should not be used anymore, it would be great when you could replace these dependencies as quickly as possible.
Hi there! I'm having an issue with RevenueCat + CocoaPods when trying to build my Flutter app in Android Studio. In Android Studio, I get the following error message: Xcode build done. 18.0sFailed to build iOS appError output from Xcode build:↳ ** BUILD FAILED **Xcode's output:↳ Writing result bundle at path: /var/folders/s3/ghl3km215r790k4zktzbs0n00000gn/T/flutter_tools.CdsWMe/flutter_ios_build_temp_diricNjPw/temporary_xcresult_bundle /Users/javiernanni/StudioProjects/Respirar/ios/Pods/RevenueCat/Sources/LocalReceiptParsing/BasicTypes/AppleReceipt.swift:68:46: error: value of optional type 'String?' must be unwrapped to a value of type 'String' return (try? self.prettyPrintedJSON) ?? "<null>" ^ /Users/javiernanni/StudioProjects/Respirar/ios/Pods/RevenueCat/Sources/LocalReceiptParsing/BasicTypes/AppleReceipt.swift:68:46: note: coalesce using '??' to provide a de
Good morning Our product fully integrate with RC to handle subscription. We’ve been very happy so far with everything but this rejection yesterday from our Mac Catalyst build from the App Store review team. Is there something we have missed in our implementation? Is there a special check to see if the receipt is available at launch time and then exit 173 if it doesn't? Would love your expert point of view..
Hi all,I’ve implemented readyForPromotedProduct (former shouldPurchasePromoProduct) method of PurchasesDelegate so that the user can select a promoted subscription straight from the App Store and be redirected to in-app payment sheet.I’m trying to test the implementation using the link as per the documentation:itms-services://?action=purchaseIntent&bundleId=<BUNDLE_ID>&productIdentifier=<SKPRODUCT_ID>The link redirects me to the app, but no payment sheet appears. The console shows me an error:Tried to send purchase intent: <SKPRODUCT_ID> to delegate, delegate does not respond to method paymentQueue:shouldAddStorePayment:forProductBy the way, Purchases.configure has already been called and Purchases.shared.delegate = self set before, I’m basically opening the link with the app already being active. Another method of PurchaseDelegate func purchases(_ purchases: Purchases, receivedUpdated purchaserInfo: RevenueCat.CustomerInfo) is working with no issues. Any idea
So we just got an e-mail from a client that states he has a subscription in our app, but when I look into our database, and in RevenueCat, this user does not.However, his wife, who didn’t purchase a subscription, does have a subscription now, both in our database and in RevenueCat.It turns out, that they both have an own Android device, but they share the same PlayStore account.When this person wants to purchase a new subscription, he gets the error message “you already have a subscription”. Which makes sense, as the subscription is tight to the Play Store account.However, I would expect that in this case either:his wife gets the entitlements removed, and he gains it or, they now both have the entitlementsHow could it happen that his wife has a subscription?And how can I make sure he gets the subscription, and his wife not?And, even better, is it even possible to give them both a subscription, using the same Play Store account?Thank you!
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.