Get help with your SDK implementation.
Recently active
Hi, after i buy my subscription, purchaserInfo show sometimes indicates a purchase, sometimes not With Android Emulator / Flutter Here is my code to check checkPremium() async { Purchases.addPurchaserInfoUpdateListener((purchaserInfo) async { PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo(); (purchaserInfo.entitlements.all["remove_ads"] != null && purchaserInfo.entitlements.all["remove_ads"]!.isActive) ? print("Active") : print("Not Active"); setState(() {}); }); }
Recently, we have run into cases where using multiple Android devices leaves our users in a state where they have no entitlements. Repro Steps:1.) On the RevenueCat dashboard, set “Restore Behavior" to “Transfer Purchases”.2.) On Device #1…. - Log into Google Play with your account. - Install our app. - Launch our app (configure() is called at startup with a null user ID) - Create an account. (login() is called with the new user ID) - While logged into this new account, purchase a subscription managed by RevenueCat.3.) On Device #2… - Log into Google Play with the same account from Step 2. - Install our app. - Launch our app (configure() is called at startup with a null user ID) - Do not log in yet.6.) Notice that the subscription that was purchased on Device #1 is transferred from the user’s account to the anonymous user that was created when the application was launched for the first time on Device #2. This is denoted by “Got their purchases transferred from another user” on
In the SDK docs it is mentioned that the SDK caches user information. What is the TTL on the cache information? How stale can the information get? If a user leaves the app in the background for a few days does the SDK refetch information when the app is opened back up? https://docs.revenuecat.com/docs/purchaserinfo#get-user-information
Is it possible to get the value of currency in initial_purchase web hook. Initial_purchase webhook return currency: null when trial is provided to the user. I need a currency value to create subscriptions in my system.store: Amazon
Hi RevenueCat,After renew subscription, the isActive become to false, I got the log:EntitlementInfo(identifier='Premium', isActive=false, willRenew=true, periodType=NORMAL, latestPurchaseDate=Tue Apr 19 15:22:10 GMT+07:00 2022, originalPurchaseDate=Tue Apr 19 15:22:10 GMT+07:00 2022, expirationDate=Tue Apr 19 15:29:08 GMT+07:00 2022, store=PLAY_STORE, productIdentifier='com.test.nightshade.one.monthly', isSandbox=true, unsubscribeDetectedAt=null, billingIssueDetectedAt=null, ownershipType=UNKNOWN)I saw somethings:ownershipType is UNKNOWN → it should be PURCHASED isActive = false + willRenew = true → it should be isActive = true + willRenew = trueDo you know why it’s happen and how to fix it?---------------------------------------SDK Version: 5.0.0-rc3Operating System: android 9
Hello!I have used block transfers as a restore behavior in revenue cat in accordance to my application’s business logic which is:If User A subscribes to product and his subscription in underlying store is active then the User B shouldn't be able to make the purchase, but if the subscription of User A in underlying store is expired then the User B should be able to make the purchase.Currently I am facing issue of There is already another active subscriber using the same receipt.while trying to purchase from User B even if the subscription purchased by User A is expired. For the desired behavior when the subscription of User A is expired then the purchase should be transferred to the User B but if the subscription of User A is active then the purchases shouldn’t be transferred to the User B.Is there any way that I can achieve this desired behavior? If not is there any workaround for this ?
Hi,Please help us to solve a mystery.When we build our app and upload to testflight I can see that the app send request to sandbox.itunes.apple.com and it’s very slow. According to posts in forums and communities this is known issue that is not taking care of for years from Apple side.This request is taking a lot of time (I assume that this request source is from react-native-purchases library) and slows down our loading process of the app.Sometimes the requests are even timed out or I get message like:None of the products registered in the RevenueCat dashboard could be fetched from App Store Connectand the products are not loading I don’t see such requests from the production version that is downloaded from the app store.I do see requests to itunes.apple.com How can I make sure that this situation happens only on testlight. How can I build the app in a production mode to check this. I tried the ad hoc build and install .ipa on my device but same thing happened. Does anyone took a look
We did RevenueCat Flutter SDK setup to start selling IAPs in our hybrid application, but we're having a lot of problems when testing the purchases in the iOS Simulators. We already read the discussions across this STORE_PROBLEM issue #1, #2, and many others, but we are trying to debug it deeper because we strongly believe that a misleading configuration exists, but we can't say if it's with RevenueCat Flutter's SDK or with Flutter itself. We found out that the error disappear when running the Flutter iOS app (ios/Runner.xcworkspace) directly through XCode, not through `flutter run ….` CLI. After the build is made through XCode, further builds made using `flutter run ...` work as expected. It seems that when trying to run using `flutter run` first, some files are not being copied or configuration is not being correctly made, which causes this `STORE_PROBLEM` error to happen. We couldn't find this difference between XCode and Flutter builds, but we're still investigating what can be pos
Hi there! I’m using an App Store sandbox user, auto-renewable subscriptions, and have enabled the “Interrupt Purchases for This Tester” option in App Store Connect.When forcing the interruption, the `purchasePackage:` method fails with the correct error description.I’ve set my delegate to call the method `didReceiveUpdatedPurchaserInfo:`. After the user agrees to the new terms, the App Store window closes and confirms the purchase but the delegate method `didReceiveUpdatedPurchaserInfo:` isn’t called. If I try to purchase the subscription again, I’m told I already own it.I would expect the `didReceiveUpdatedPurchaserInfo:`delegate method to be called in this case. I’ve set up Apple Server-to-Server Notifications via the link provided by RevenueCat with no luck. Anyone know what might be going on?
Hi, which is the value to use in purchaserInfo!.entitlements[entilementName]! to get the number of renewals for the current subscription?purchaserInfo is from RevenueCat.Purchases.shared.getCustomerInfo { (purchaserInfo, error) inThank you.
Hey thanks for listening. I have been using Google play billing library since past 2 years and now switching to Revenue cat. I have few questions regarding migrating subscribers of my app. So there are two types of subscribers 1. monthly and 2. annual subscribers. I have saved their data in firebase realtime database and nowhere else.Your docs were really helpful in integrating the Purchase SDK of RevenueCat but what i am not able to understand is about migrating these active subscribers (around 20). Won’t the RevenueCat automatically be able to communicate with Google Play Servers and check if a user is premium user and active? If not and if i have to manually update the data (which is incomplete as i don’t know about the app_user_id) then what is the best possible way to handle this?
I’m trying to test the Amazon library, and get the following for Offerings back from RC…{“offerings”: {“all”:{}, “current”:null}}Notes:We only have one Offering Works on iOS and Play Using the correct new Amazon Public app-specific API key Checked “Use Amazon” in UnityAny insight into this issue?Thanks!
Flutter Channel stable, 2.10.4Dart SDK version: 2.16.2 (stable)purchases_flutter: ^3.10.0Serial request done: GET /subscribers/#######/offerings, 0 requests left in the queue[Purchases] - DEBUG: ℹ️ API request completed with status: GET /v1/subscribers/######/offerings 304
I just started trying out RevenueCat today and I want some clarification about not being able to use an SDK for the web, hence not able to get `getPurchaseInfo` of a user to check what subscription the user is on. What would be the best way to do this?I have a cross platform app built with capacitor for android, ios and also for web.I am working on adding app purchases and stripe for web.I realized that I cannot use the Ionic Capacitor sdk on the web. The error message says `cordova_not_available`, which makes sense. So would this “plan checking”, have to be done on my backend side, where my backend does an API request to RevenueCat backend and my backend sends this information to the web client? Then, why not do it this way on the mobile app?
We recently had a user who started their 14 day free trial on March 31.We got a webhook from revenueCat for this initial purchase with an expiration date of April 14 at 06:13GMT. We use this expiration date as the trial end date / next renewal date.The user’s customer profile lists that their trial converts on April 15th and we haven’t yet received another webhook for this user (which makes sense because it is not the 15th yet).Why is there a discrepency between the expiration date in the webhook and the trial conversion date?These types of errors end up with users who don’t have access to an app that they paid for and are very rightfully upset as a result.
We are testing the android side subscription and it is not working. We have managed to complete the iOS side configuration successfully, Subscribed from iOS and fetched from android as well. But,But, when we try to subscribe from android, subscription get's completed as well in the plays tore account. But It's going to the on error method of the revenuecat SDKs. And the error message prints below error2021-12-18 12:40:50.694 29887-30921/com.goviral.app D/[Purchases] - DEBUG: ℹ️ API request completed with status: POST /receipts 5032021-12-18 12:40:50.698 29887-30921/com.goviral.app E/[Purchases] - ERROR: 🤖‼️ There was a problem with the Play Store. Please guide us on why this is happening, Since playstore account is showing the subscription successfully. But revenue cat is not getting it and showing the above error and not reflecting in the users account.
Hi guys, I just added/configured RevenueCat in one of my apps and when I try to test in the simulator with the StoreKit Configuration File I’m getting some weird errors… Basically I was able to purchase the auto renewable subscription I’ve set up but now each time when I start the app, the SDK sends a request to the /v1/subscribers/{UUID} and when it tries to decode the response it throws an error with No value associated with key CodingKeys(stringValue: \"attributesErrorResponse\", intValue: nil) (\"attributesErrorResponse\"), converted to attributes_error_response. As far as I can tell from the debug console messages everything else seems to be fine, no errors happening… I’m using the latest version, 4.2.1 via SPM.Any ideas what I’m missing?Thank you!-------Later Edit. This is weird, but was caused by a misconfigured bundle id. My debug builds will append a .dev suffix to the bundle id so … this is was screwing up with RevenueCat SDK.
Hello,it’s possible to test Purchases with android emulator (google pay activated) , because Offerings.current is empty.2021-12-14 17:33:19.831 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ API request started: GET /subscribers/1/offerings2021-12-14 17:33:19.831 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ API request completed with status: GET /subscribers/1/offerings 3042021-12-14 17:33:19.831 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Requesting products from the store with identifiers: um.subscription.gold.monthly.kart2021-12-14 17:33:19.832 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Requesting products from the store with identifiers: um.subscription.gold.monthly.kart2021-12-14 17:33:19.832 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Querying purchases2021-12-14 17:33:19.841 11616-11929/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Products request finished for um.subscription.gold.monthly.kart2021-12-14 1
Hi,We are using Alias (legacy) restore behavior and I wonder if switching to Transfer purchases would be safe to do?We already have paying users. We do not have any login mechanism in the app itself and we fully rely on RevenueCat. My motivation to switch from Alias (Legacy) to Transfer Purchases is to enable premium users to get premium features connected with the Premium subscription on multiple devices they use with their Apple ID/Google ID.So the desired result is that a user who downloads our app on a mobile phone and pays for Premium Subscription can download our app also on iPad or other phone and will get premium features of our app on those devices too.Could you please advise if this is doable with switching to Transfer Purchases and if it is safe to switch restore behavior on a running app?Thank you.Lukas
We are interested in supporting App Store Promotion for our subscription feature and noticed saw that SKPaymentTransactionObserver method is required to process this transaction. We are using Flutter with RevenueCat (and inexperienced with native iOS) and had some clarifying questions:Is shouldPurchasePromoProduct in https://docs.revenuecat.com/v3.0/docs/configuring-sdk equivalent to supporting the SKPaymentTransactionObserver? If question above is yes, does shouldPurchasePromoProduct have to be implemented on the native iOS side? Is there any recommended ways to support this in Flutter? The documentation mentions “If your app is able to handle a purchase at the current time.” What conditions or user states should we be aware of to know if the purchase can be handled (e.g., is it just whether we can tell our app that the user is now a subscribed user?) Thanks!
Hi,I am seeing a weird behavior from RevenueCat in our app where purchases are getting linked to the wrong account. I’ve been able to narrow it down to the following use case: User logs in with new account. User subscribes. User cancels their subscription. User deletes account. User’s subscription expires. User logs in with new account. User subscribes again. Purchase is linked to old account instead of the new account. Here’s what I see in the customer history for the old account who is erroneously getting the subscription: Here’s the history for the new account (Don’t mind the promotional entitlement I granted them while I investigated the issue): This is clearly the wrong behavior since the user purchased the subscription after logging in with the new account. The purchase should not count as a renewal but as a new purchase on the new account. It seems that RevenueCat erroneously thinks the old subscription was renewed. I do understand that restoring purchases might solve this iss
Hello, Just received a rejection because StoreKit did not return any products for my app. This is my 1.0 submission, but I previously submitted a build that was approved, as were all my iAPs.Now I’m submitting a new 1.0 build, and with all iAPs approved, StoreKit is not returning any products, resulting in a rejection.Everything works perfectly in Debug and TestFlight
I'm moving from my paid iOS app to a subscription model. I synced the build number of the paid app using the purchaseHelper. https://github.com/codykerns/PurchasesHelperCompatibilityAccessManager.shared.syncReceiptIfNeededAndRegister(entitlements: [ .init(entitlement: "premium", compatibleVersions: ["1", "2", "3","4","5"]) ]) How can I test that existing paying users are converted to Premium before releasing the app?If I buy a paid app on my device and update it to a test flight, will I be able to test it?
A growing number of our Android users are experiencing unexpected subscription expirations due to the PurchaserInfo.getEntitlements() returning empty incorrectly. The user will then use the restore functionally and PurchaserInfo.getEntitlements() will return correctly with their entitlements on the restore callback. Within the the next couple sessions the user will get 0 entitlements returned again and be forced to restore once again. This behavior does not seem to stop and the users are stuck in this loop. Background information:- Android- Confirmed users own entitlements in rev cat dashboard- RevCat Version: v3.3- We call Purchases.getSharedInstance().getPurchaserInfo() to verify subscription on every session
Hello, In my app I have Block Restores enabled and the following situation:2 auto renewable subscription options set up - monthly and annualUser A subscribes to an annual subscription User B logs in on the same device and tries to subscribe to annual - gets the `receiptAlreadyInUseError` and I show an error But if User B tries to subscribe to a monthly subscription - the subscription goes through, switching User A’s subscription to a monthly subscription instead of annual (user B still doesn’t have a subscription, as expected)How can I tell that the currently logged in Apple ID is already subscribed with a different user and show an error when another user tries to subscribe and inadvertently changes the original user’s subscription?`CustomerInfo` doesn’t seem to have that info, User B has no active subscriptions.
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.