Get help with your SDK implementation.
Recently active
Goal: I’d set up a monthly/yearly subscription plan for App Store users, and now would like to increase the price for new users. However, I’d like to grandfather the old users’ price (i.e. their subscription prices ideally wouldn’t change).Setup: I originally created 2 new products in Apple/RevenueCat, created a new RevenueCat offering pointing to those products, and then made the new offering the default. Within my app, the new price is as expected! However, if a user goes to their payment settings, they can see ALL of the pricing. I have paying users across all 4 subscription products. Question: As I understand it, if I untick “Cleared for Sale” on the old products, old users’ subscriptions will stop. Is there a way to do this without disrupting the user? Thank you!
Want object structure and demo values for return object of Purchases.getOfferings(). It returns an object of “current” and “all” keys. And don’t return demo values with which we can test in debug mode.
Hi,I am able to buy some consumable (on iOS Sim & Device) using my Sandbox account. I see : [Purchases] - INFO: 😻💰 Purchased product - 'xxxxxx' 15:33:28 DEBUG Purchase succeeded. Optional({ "bundleId" : "xxx", "deviceVerification" : "w97BiaZOSrXxTrvrR6wTZuT44AL39rFO+V0gTIoE45eIjLCz6d4KmmemegmqFect", "deviceVerificationNonce" : "39520f62-1cba-4ef9-a348-6523a7baeb17", "inAppOwnershipType" : "PURCHASED", "originalPurchaseDate" : 1655494381866.502, "originalTransactionId" : "11", "productId" : "xxxxxx", "purchaseDate" : 1655494381866.502, "quantity" : 1, "signedDate" : 1655494381867.5581, "transactionId" : "11", "type" : "Consumable"}) But Dashboard is still empty & [5 - Make a test purchase] is still unchecked.I configured the sandbox endoint in the AppStore.So I am stuck.Do you have an idea?
Imagine that my app crashes just after a successful payment. I want to know purchase to finish when my app restarts.I don’t see in the docs how to do it using RevenueCat. I was using this code: SwiftyStoreKit.completeTransactions(atomically: true) { purchases in for purchase in purchases { switch purchase.transaction.transactionState { case .purchased, .restored: if purchase.needsFinishTransaction { // Deliver content from server, then: SwiftyStoreKit.finishTransaction(purchase.transaction) } // Unlock content case .failed, .purchasing, .deferred: break // do nothing } }} Thanks
We’ve got an issue where the PurchaserInfo is empty when using same appUserID but different device/platform. We’re using the Legacy (Alias) mode because we want the user to share the entitlements across multiple devices.This scenario is: Android (paying Subscriber) -> iOS (new device)Is what we’re trying to do possible? Is there a reason why the PurchaserInfo would be empty on the iOS device.We checked to see if RC is throwing any errors when restore purchases is pressed, which it isn’t. Obviously, we don’t expect Restore Purchases to actually restore a purchase, but we do expect it to send the entitlements for the appUserID. Is our understanding correct?
I am using the flutter SDK to integrate IAP to my app and i am using the non renewable subscription model. I want to get a unique transaction ID issued by apple to send to my server to store it if the user wants to refund his purchase in the future.
There is another question out there marked as solved (see below) however I believe there is a need to re-open this as per recent changes to Google policy. Google is now requiring apps to allow for cancelling a subscription from within an app. An email was sent to app developers about a policy change: We’re updating our Subscriptions policy to state that users must be able to easily cancel their subscriptions from within the app. You’ll have at least 30 days from the date of this notification to update your app to comply with the following policy changes.As this is not currently possible via RevenuCat it means that apps are in danger of being in violation of Google policies and banned from the Play Store. We urgently need a way to cancel a subscription so that it does not renew but without refunding for purchases already made.
Through the Google Play API you can revoke, refund, and cancel a subscription. Through the RevenueCat API you can revoke and refund, not cancel. Is there going to be added support for canceling a subscription?
We have native iOS app with revenue Cat, its work perfect. Now we rewrite our app with Flutter framework. In app written with flutter we use revenueCat too and it works perfect on Android(release) and iOS(test flight). Imagine user bought subscription in native iOS app, then we realese new version app written with flutter, user install it and want to restore subscription. Now question will the subscription been restored ?
I have been looking in the documentation but didn’t see anything related to flutter for redeeming a coded!I have implemented the auto-renewable subscription with 1 month free trial in my Flutter app and have tested using Sandbox on iOS and works fine. How can I redeem an offer code using Flutter?
Hello, I am implementing a paywall and I want to keep the products displayed as dynamic as possible. I want to display the title and description of the product on iOS, but it is returning an empty string for both properties: I am using StoreKit with XCode to test properly on my iOS simulator using React Native: This is my App Store Connect configuration (it is in Ready to Submit state): It is working properly for Android (except it is not returning the description, maybe to due to the fact that there is no description provided for the subscription on Google Play Console):
Hello, We’re using the React Native SDK for an Android and iOS app. We have received some reports in social media from users complaining that they have been charged immediately after purchase despite the product having a 7 day free trial. We don’t have any user Ids to check in the RevenueCat dashboard yet but we’d like to understand better how free trial eligibility works in the React Native SDK. Does checkTrialOrIntroductoryPriceEligibility work on Android with the React Native SDK? I’ve seen another post from an Android native user that a different mechanism is necessary If the method returns INTRO_ELIGIBILITY_STATUS_UNKNOWN, is it safe to assume that the user is not eligible? Are false positives (is not eligible, unknown is returned) or false negatives (is eligible, unknown is returned) more likely? If a user has already consumed a free trial and they attempt to purchase a free trial product, they will be charged immediately, is this a correct assumption?Thanks in advance. Regards
Hi,Before integration with RC, we had only non-consumable IAPs, now we want to release auto-renewable subscriptions with RC SDK.We added non-consumable IAPs to the entitlement with subscriptions. That seems to unlock a feature under that entitlement for customers with lifetime access.So what is the benefit of performing `syncPurchases()` for users with lifetime access since they get the access the entitlement already?
Hi there,is there a way to check if a user has currently subscribed to a specific package? The use case is that I want to have a monthly and a yearly subscription for pro access. If a user has subscribed to one of both, I want to mark it accordingly in the UI and disable the buy button.I can’t just check if the pro-access-entitlement is active because both the monthly and the annual subscription refer to the same entitlement. Any ideas?Best, Tobias
Hi there, I have a “Lifetime Pro” inapp product. After I refunded this through Google Play it is still fetched as a bought product by Revenuecat. How can I securely verify that my non-subscription product is not refunded?This function is essential for me as it would be too easy for users just to buy the lifetime product, directly refund it and enjoy the lifetime pro for free. Appreciate any help.
On occasion we get an error from the update subscriber attributes API. We are not sure what is causing the error since we are following the documentation. Here is the error response: {‘code’: 7259, ‘message’:‘Subscription not found for subscriber’}
Before RC integration I’ve only had a non-consumable IAP for lifetime unlock, I’m adding subscriptions now with RC. Since subscriptions are new, is it OK to skip syncPurchases or is it needed in any way for migration of the non-consumable IAP?
Currently in CustomerInfo, there are properties like originalPurchaseDate and originalApplicationVersion for grandfathering users but I found originalTransactionID missing. originalTransactionID was useful to identify Spam users with shared Apple ID accounts. Is it possible for RevenueCat to expose this property so that we don’t need to add a duplicate logic to decode the App Store receipt?Thanks.
Hi, I am facing with this issue:Unable to load receipt, ensure you are logged in to a valid Apple account. The receipt is missing. I am able to get products and also able to able to see and buy them. But after I click OK, I got the error message. I don’t know why this is happening. Apple Store rejected my binary couple of times. With a physical device I can buy the product but with the simulator it works until the receipt error. Thank you.
Hey all,I am a bit confused on how best to setup subscription groups on iOS and would love your help.On my app I’m adding 3 service levels (Silver, Gold, Platinum) with 4 durations each (Monthly, 3 Months, 6 Months, Annual). The 3 service levels are setup as entitlements on RevenueCat and they are set up as 3 separate subscription groups on App Store Connect.While testing, I realized that a user could be subscribed to all 3 simultaneously and upgrading/downgrading does not automatically work as I didn’t specify anywhere that one subscription is a down/upgrade of another. From my understanding on this and this post, Apple would automatically manage the up/down/cross grading with refunds and billing. My question is; to set everything up correctly, would I need to have 1 instead of the 3 subscription groups I currently have for each service level on App Store Connect and pile all the 12 products under 1 subscription group? Or did I start off correctly with 3 subscription groups and would
Hello, We are experiencing consistent crash after a test subscription purchase in our Android app.The purchase first seemed to be successful, but after a short time, the first crash occurs and the crash message appears every 30 to 50 seconds from the background.Also, re-launching the app also crashes after the purchase(the purchase might have triggered something). Here is the crash log:23:38:39.533 26296-26521/? E/AndroidRuntime: FATAL EXCEPTION: Thread-12 Process: com.company.app, PID: 26296 java.lang.NoSuchMethodError: No virtual method getSku()Ljava/lang/String; in class Lcom/android/billingclient/api/Purchase; or its super classes (declaration of 'com.android.billingclient.api.Purchase' appears in base.apk) at com.revenuecat.purchases.google.PurchaseDetailsConversionsKt.toRevenueCatPurchaseDetails(purchaseDetailsConversions.kt:16) at com.revenuecat.purchases.google.BillingWrapper.toMapOfGooglePurchaseWrapper(BillingWrapper.kt:401) at com.revenuecat.purcha
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).\nThis could be due to a timeout, or a problem in your configuration.
How to solve this missing lib on android?I have installed cordova and capacitor plugins for ionic by following this guide :https://ionicframework.com/docs/native/purchases$ npm install cordova-plugin-purchases@2.3.0 $ npm install @awesome-cordova-plugins/purchases $ ionic cap sync package.json I have those : "@awesome-cordova-plugins/core": "5.43.0","@awesome-cordova-plugins/purchases": "^5.44.0","cordova-annotated-plugin-android": "^1.0.4","cordova-plugin-purchases": "^2.3.0",
So we get rid of all AppStore/PlayStore integration for processing payment and rely fully on RevenueCat webHook.the main issue that we encounter so far is that when we have a restoreSubscription the RevenueCat webHook does't react also if user has a purchase already and he receive "You are currently subscribed to this" and press OK again the RevenueCat webHook does't react.How can we manage this 2 scenarios ?
I’m invoking Purchases.shared.purchase on a new iOS app I’m building and all is connected and configured properly (I think), this is what I get: 022-06-21 15:00:24.660227+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ API request completed: GET /v1/subscribers/$RCAnonymousID:1001512f67bb474d872e2adbe6ef3a22 3042022-06-21 15:00:24.664658+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ Sending latest CustomerInfo to delegate.2022-06-21 15:00:24.664755+0100 Mindworks[29422:726454] [Purchases] - DEBUG: 😻 CustomerInfo updated from network.2022-06-21 15:00:24.664820+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ GetCustomerInfoOperation: Finished2022-06-21 15:00:24.664994+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ Serial request done: GET subscribers/$RCAnonymousID%3A1001512f67bb474d872e2adbe6ef3a22, 0 requests left in the queue2022-06-21 15:00:24.665013+0100 Mindworks[29422:726540] [Purchases] - DEBUG: ℹ️ GetOfferingsOperation: Started2022-06-21 15:00:24.665164+0
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.