Discussion and help from anything related to RevenueCat.
Recently active
In The Case of a Change/ Changes in Custom UserID,what happens to the Older userID(s)?does the older custom user ID still old subscription privilege ? I am trying to cap the number of devices that can be signed in with a subscription with My logic, in the case where a user intentionally try to outsmart the system by signing in the same email they used in purchasing a subscription to many device in pursuance of premium access for multiple devices with a different Sign In with Apple or google sign in, my Logic create a new custom User ID for the original subscription account ,each an every time its been used with a new Auth, with the hope that each and every previous custom userID would be redundant , hence limiting number of account that is allowed for one subscription account . So please, tell me what will happen to the previous custom IDs that were created before the the account was assigned a new one .. thanks
Docs say not to configure RevenueCat in -application:didFinishLaunchingWithOptions: when using custom user ids since iOS 15+ prewarming. Instead configure in your root view controller’s initialization method. Which ‘initialization’ method is that? The +initialization factory method, or the -init instance method? https://www.revenuecat.com/docs/user-ids#provide-app-user-id-on-configuration Provide App User ID on configuration ❗️iOS 15+ PrewarmingIn certain cases, iOS may prewarm your app - this essentially means your app will be launched silently in the background to improve app launch times for your users.If you are not using RevenueCat's anonymous IDs as described above, and are instead providing your own app user ID on configuration, do not call configure in application:didFinishLaunchingWithOptions:. Instead, call the configure method in your root view controller's initialization method.
In swift, when I purchase a consumable item, it sends a receipt to the server for validation. In storekit, I know that it checks the purchase history of the consumable item on the server and then calls the finishtransaction() function inside the app.So how can revenucat do this? When I use revenucat, I tried to check the purchase history on the server but there is no history. Please tell me how to do it.Thanks.
Can I use Google Play Developer API and App Store Server API (e.g. cancel, defer, extend) if needed? Will it affect subscription management of RevenueCat if I use those original APIs rather than RevenueCat REST API?
I’m using revenueCat in my flutter project, when building my app in Xcode it throw this exception:RevenueCat requires Xcode 13.2 with Swift 5.5.2 to compile. installed Xcode version: Version 14.2 (14C18)swift --version:swift-driver version: 1.62.15 Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)Target: x86_64-apple-macosx12.0any help?
Suppose you don’t have any user registration or account system.Now, if the user downloads your app (let’s say with 1 week free trial), and deletes the app, and re-downloads it again, if they are using random/anonymous user IDs that are generated by RevenueCat, then they will be able to circumvent the subscription process by simply deleting and resinstalling the app to get another 1 week free. They can do this repeatedly. Am I correct?If so, then it seems important to use custom user IDs in this scenario (for example, UIDevice.currentDevice.identifierForVendor.UUIDString) which will generate a unique user ID for each device for the vendor/app. Then we can check if the user has already downloaded and installed the app and taken advantage of the free trial, and if so, don’t allow another. Correct?If we use this approach, the subscription won’t be available on any other devices. But that’s okay, since on those devices, we can always use the “Restore Purchases” button to get access to thos
I am testing a tvOS app that has a subscription and two consumable product IAP. The consumable product IAP works properly when running the tvOS app via Xcode. However, when running the same app via Test Flight, the consumable IAP does not allow the purchase of a second exact consumable and instead provides this message: “The In-app purchase has already been bought. It will be restored for free”. Again this is a consumable purchase so there should be no restoration and the user should be able to purchase it as often as they want. This again does NOT happen when running via Xcode. The consumable IAP is set as consumable on App Store Connect and is not associated with any entitlement here on RevenueCat. I am obviously concerned that if it’s happening on TF that it will happen in production as well. Why is this occurring? Thanks.
Hi all,I am trying to integrate RevenueCat into my Managed Expo app to allow users to make a subscription purchase. I’ve followed all the guides on setting up my subscriptions in the Apple appstoreconnect as well as on RevenueCat’s dashboard.Now I am trying to `Purchases.getOfferings()`, but it is returning ERROR: [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). For context, my organization uses a separate internal distribution build for development.In the app store, our bundleIdentifier follows standard naming convention: `com.myorg.myapp.ios`. For our internal distribution development build, our bundleIdentifier is `com.myorg.myappdev.ios`.After reading this post, my hunch is that my development bundleIdentifier does not match the one in t
EXPIRATION event type with "expiration_reason"="UNSUBSCRIBE" is sent right after CANCELATION and isn’t sent when subscriptions are really expired according to expiration time.(Google Play subscriptions)It was ok before the release for Google Play billing V5...
I would like to integrate Firebase Extension into my project and according to the instructions guide I need to follow a few steps herehttps://www.revenuecat.com/docs/firebase-integration#2-set-firebase-user-identity-in-revenuecatAll those steps are only showing code for Swift.Is there no integration available for Flutter? Is it not possible?
The problem is that purchasePackage takes long time (over 60 sec) to complete its job and return value. Developed with Flutter, testing on iOS device with Sandbox environment. The related code is :CustomerInfo purchaserInfo = await Purchases.purchasePackage(selectedPackage); Is this something related to Sandbox and App Store Connect and no need to worry on production environment? If anyone advise on this issue, ,much appreciated. Thanks.
Hi folks!Google has updated their policy with the following text, marked my highligts in red:To give users more control over their data, we're introducing a new account deletion requirement under our User Data policy. If your app allows users to create an account, then it must also allow users to request for their account to be deleted in the app and through a web resource. All developers must also update their Data safety form in Play Console, where some information may be displayed on your app's Data safety section on Google Play. Learn more in our Help Center and blog.I have used RevenueCat 100% as my “userhandler” so I all requests regarding deletion has been done manually on e-mail from end user.In the future it will require a webpage to actually do so, is this a feature that maybe RevenueCat would provide? Or do I need to actually create a webpage to actually do this.
I viewed Apple's docs and saw the information about billing retry (60 days), but not in RevenueCat. I want to know how to detect a subscription is in billing retry (60 days)? Is Billing_issue when payment is failed before billing retry? Is Expiration when subscription is officially expired (after 60 days retry)?
In the case if the purchase history has to be automatically paginated (if user has alot of purchase history), will it still give us the most recent purchase via nonSubscriptionTransactions.len - 1 ?
Hi there,My question is this: We have connected webhook events to our app and in the client side we have implemented only the configure part with userId and login method RNPurchase.configure({ apiKey: "xxxxxxxxx", appUserID: UUID-userIdHere }); RNPurchase.logIn(userID); So our app won't have anonymous users. According to documents, we should not call logOut() method for users because we don’t want anonymous users. However, we should be able to get TRANSFER type of events in the webhooks but we could not received it yet. In this case our users can change users with different logins. We have tried that: 1-) User logged in our application, sdk configure and login method is invoked.2-) Then we have deleted user in our system 3-) We have created new user with different userId but belongs to same Google Play user. 4-) SDK initialized configure and login method again but never received TRANSFER event. We get all events except TRANSFER events. So how can we g
Hello there!We’re prototyping an integration with RevenueCat but initial tests are failing on Android with the following error:{ "nativeStackAndroid":[ ], "userInfo":{ "underlyingErrorMessage":"Error when fetching products. DebugMessage: An internal error occurred.. ErrorCode: SERVICE_UNAVAILABLE.", "readableErrorCode":"StoreProblemError", "readable_error_code":"StoreProblemError", "message":"There was a problem with the store.", "code":2 }, "message":"There was a problem with the store.", "code":"2"} We’re using the latest version of `react-native-purchases`. The billing permission is also set in our AndroidManifest:<uses-permission android:name="com.android.vending.BILLING"/> Also, both the Android project and the products on RevenuCat don’t report any error/issue. The products (subscriptions) have been imported using the automatic import tool on RevenueCat. Thank you in advance for your help.
I had an initial functioning setup to get offerings and make a purchase. It worked : I could make a test purchase.The code was in a ‘shop’ page, and I decided to move the RevenueCat initialisation to main.dart as initial entry point. But maybe this wrong because it screwed everything up, and the app crashed on loading (error below). So I put it back to what it was.The app now loads and all screens function EXCEPT I am now getting the same error when I open the shop page. Even though it was working before.*** Assertion failure in +[RCPurchases sharedPurchases](), RCPurchases.m:160*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There is no singleton instance. Make sure you configure Purchases before trying to get the default instance. More info here: https://errors.rev.cat/configuring-sdk'*** First throw call stack:(0x183586754 0x19804d7a8 0x1834883f8 0x1848afa6c 0x1009762f4 0x1009f2d34 0x100cb7bc0 0x100cb5b04 0x10109ea60 0x100dafd7c 0x1010b
Hi, I used RevenueCat to set my in-app subscription. While developing everything was working correctly. Apple team approved the app and I released it. I downloaded the app, but the offerings wasn't fetching and I was unable to make a purchase.I found information that I should wait for 24 hours before release, so I made some small changes in my app, sent it to review, waited 24 hours and released it. Unfortunately the problem still exists.Does anyone have any idea why is that?Thanks in advance
I have in Revenue 1 Offer with 4 packages. 1 Premium Monthly, 1 Premium Yearly, 1 Plus Monthly, 1 Plus Yearly. All packages are connected with the product from the respective app stores. Everything works perfectly on Apple but Google does not show me a single subscription (Premium Monthly). Does it take until changes are visible in RevenueCat. We use the whole thing in a Flutter App.
Hello,I have a question about restoring purchases. I have an app using anonymous user ids. App starts with an intro slider, the last slider page is a pre-paywall view where the user can choose to either restore purchase or goto subscriptions ( hence the paywall). Restore purchase works as intended if the user has an ongoing subscription. I also saw that if a user with an ongoing subscription by misstake continued to the paywall view and tried to buy another subscription this was detected by the call to Purchases.shared.purchase… and a relevant alert in Swedish was presented, perfect!But my question is there a way to programatically check if a user is eligible to restore a purchase when the user has made a new installation of the app? Then I could disable the goto subscription button on the pre-paywall view. Best Regards, Tomas
I have the problem that I can’t get a product that is configured as non-consumable IAP in App Store Connect. I don’t have any issues with getting the subscription products though. The error is “Could not find products with identifiers: [“lifetime_2499”]. There is a problem with your configuration in App Store Connect.”My process for setting up the IAP is the same as for the subscription products. And since that works it is not an issue with the Paid Apps agreement (?). Status is “Ready for submit” which is the same for the subscription products. I am using Capacitor and the unofficial @capgo/capacitor-purchases plugin. Any ideas what I might be missing? I am testing on a real device.
I’m trying to use an offering with multiple packages (using custom identifiers), and the documentation is incorrect when it says you can access an offering and a package via its identifier in this section:https://www.revenuecat.com/docs/displaying-products#displaying-packages It says to use this code:offerings.all("experiment_group").package("<package_id>")But in the RevenueCat SDK, “all” is a property and not a method. See PurchasesOfferings interface:https://revenuecat.github.io/react-native-purchases-docs/5.13.1/interfaces/PurchasesOfferings.html#current Similarly, there is no “package” function on the PurchasesOffering interface:https://revenuecat.github.io/react-native-purchases-docs/5.13.1/interfaces/PurchasesOffering.htmlIt seems like the only way to get this is to search through the availablePackages array until you find a matching identifier.
Consider a situation where user had subscribed to any of the plans in one platform (assume ios) and later due to some reason user has to change to different platform (say android) or vice versa. How to best handle this situation ? User doesn’t seem to see active entitlement.
verbatim copy of code from the documentation: const sdk = require('api')('@revenuecat/v4.0#1yz2c0m2sl5v5md8q');sdk.auth('Bearer REVENUECAT_API_KEY');sdk.deleteSubscriber({app_user_id: 'app_user_id'}) .then(res => console.log(res)) .catch(err => console.error(err));produces this error:Error: Sorry, `deleteSubscriber` does not appear to be a valid operation on this API. at Proxy.<anonymous> (/workspace/node_modules/api/src/index.js:164:21) at processTicksAndRejections (node:internal/process/task_queues:96:5)
RC Community I need your help. For 2 months we have not gotten paid from Apple. We are talking 6 figures in USD! This SIGNIFICANTLY affects our cashflow and we will have some challenges making payroll. I wrote to the finance team and they have not responded (it has been 2 weeks).What can I do here??????Background & TimelineApple had asked us to verify our company and account IDs and we did it Due to the verification they help our money from the end of Feb payout. Now its end of March, we still don’t see an issued payment
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.