Get help with your SDK implementation.
Recently active
Hi,I’m a currently facing an issue in sandbox mode with renewal subscriptions in Android.When I purchase I get the activeSubscriptions property within the UpdatedPurchaserInfoListener(onReceived) but after some time, if I kill the app and relaunch it, the listener will return an empty activeSubscriptions.And still, after some time, killing the app again and relaunching it will give me the expected activeSubscriptions.This is happening before the subscription gets cancelled after the 6th renewal.So why do I get this empty activeSubscriptions property whereas the subscription is supposed to be active ? It’s really annoyingThanks for helping
I’m trying to set up Purchases on a watchOS app which has a companion iOS app.I thought I could consume a Swift package for multiple targets at the same time but as per this post on SO it’s not quite straightforward as I thought it would be.I followed Diego Carrera’s solution and added the Purchases framework in the Watch extension like this:General tab, and in Frameworks, Libraries and Embedded Content press +, select the package and press AddThis did the trick for me and on my Watch App Extension I can finally see the import Purchases option.I also added a shared singleton class to manage Purchases’ delegate, both for the iOS and the watchOS app. There, I configure everything, set the delegate to self and retrieve the purchaser info.This is all good if I run everything on the iOS app but when I do the same on my watch, Purchases won’t work and I get no information at all:<PurchaserInfo originalApplicationVersion: (null), latestExpirationDate: (null) activeEntitlements: {}, activeS
I have found testing that the line below sometimes returns false when a subscription is active. purchaserInfo.entitlements[XXXXXXXXX]?.isActiveHow can this be?Also I notice that in your quick start guide you no longer have the line purchaserInfo.entitlements[XXXXXXXXX]?.isActiveregardsPeter
Hi. There are groups in my app and the groups have a couple of members. If one of them pays for subscription, I change the group status and all the members in group can access premium contents. Can I initialize the ‘group id’ instead of user id (firebase auth uid) ? Is it a good practice? Do I have to use aliases?My code: await Purchases.setup(_api_key, appUserId: group.id);
We added two subscriptions to Revenue dashboard, and that didn’t fetch the subscriptions on mobile side correctly.It seems have problem between Revenue and ionic project so what’s the best way to troubleshoot this problem?
I have an app that is available for macOS(native) and iOS. The app has non consumable IAP(lifetime) and subscriptions(monthly+annual). The reviewer is unable to complete the purchasing of subscription on Mac. Here is the message:We discovered one or more bugs in your app when reviewed on Mac running macOS 12.0.1A receipt error occurred when purchasing subscription, as well as attempt to restore a purchase.The purchase flow works well on my machine but the app is unable to pass review. It was rejected 3 times already. The error is RCInvalidReceiptError("The receipt is not valid.")Revenue SDK version: 3.12.8 BTW, the iOS version of the app passed the review without any problems.iOS and Mac versions share the same codebase. Yesterday I submitted Mac version with Adapty(service that is similar to RevenueCat). And voila: app is in ‘Pending developer release’ state. RevenueCat seems to be totally broken on Mac.
Hi folks, I am testing the purchase function and running into a problem that, every time I called the purchase function it will ask me to login using my Apple ID. I tested on both physical device and stimulator. I’ve login both before I installed the app (i also tried uninstall and login again but no luck). Any advice? Thanks a lot.
Hi there,I have realised that due to a bug in my code, I have not been logging in all users.As we are in the internal testing phase, this is not such a big issue.However, once the app is released it might become a problem, as users who created accounts during internal testing need to use the same app accounts. These users have not been logged into RevenueCat but are just anonymous users.My question pertains to the RevenueCat representation of these users. Is it an issue that the user who has been an anonymous user during internal testing (no purchases taking place), be logged in in RevenueCat? Thank you, and sorry for the somewhat confusing question!
Current situationMy app is currently on IOS and Android. The IAP work correctly. Im under Flutter.I used to purchase by requesting the product identifier (see below):await Purchases.purchaseProduct(<product identifier>, type: PurchaseType.inapp); Problem with new situation:Now, I have several offering with multiple packages in RevenueCat.So, I need to fetch the offering from RevenueCat when the app starts:Offerings offerings = await Purchases.getOfferings(); Look at the Response, there is an error on the price shown by RevenueCat: I end up with a different price sent by RevenueCat for the same product identifier : Price on Apple Connect: 2.99 EUR (Tier 3) Price on Smartphone in Production: 2.99 EUR Price on Response from RevenueCat SDK: 3.49 EUR (ERROR)The issue is only with IOS. I checked Apple Connect, the price is correct (see below) : I checked the purchase on Production smartphone, the price is correct (see below) : The error is only on RevenueCat when I fetch the offering.
Entitlement “pro” = will active app and allow users to access basic feature in the user interfaceEntitlement “cloud_store” = allow users to store data to our cloud server When users open our app (device A), there is no sign in form. The user can purchase a subscription which grants them the entitlement “pro”. As a result of no login process I know that the user will be an anonymous user. I also know that any other device (device B) can restore as long as they are on . I have 1 section (feature) in my app which allows users to store data to our server. For this I plan to require users to login to sync to our server. Once a user login they can purchase a different entitlement “cloud_store” My question: will I be able to allow 1 users with multiple devices, (device A: logged in) (device B: not logged in) to share entitlement “pro” and (device A) would only have access to entitlement “cloud_store” I guest I alike to keep an alliance with anonymous users and signed in users. And If signed
Hey guys,We are having difficulties with transaction_id and original_transaction_id fields which can be accessed from the SDK. Sometimes both of these fields have values and sometimes original_transaction_id is simply empty. When we take a look at the events which are being send via web hooks, we can actually see that original_transaction_id is not empty.Can you please tell us why is this happening?Also, I would like to know if there is a rule which is dictating the behavior where original_transaction_id would be empty after successful purchase?Kind regards,Aleksandar
Hello, I have a React Native iOS project where I am incorporating RevenueCat Consumable in app purchases. We noticed that there is an edge case with the purchasePackage flow described in the documentation here: https://docs.revenuecat.com/docs/making-purchases try { console.log(`Making purchase`); await Purchases.purchasePackage(productPackage); console.log(`Purchase successful`); } catch (error) { if (error.userCancelled) { // do nothing } else { // do error logic } }If there is an internet disruption or the app crashes during the execution of that purchasePackage promise (after the payment is authorized in the payment sheet but before the promise resolves), the payment can get in a weird state where it seems to be recorded but not recognized by RevenueCat. We do not get a web hook until either the user tries to purchase the product again or the user successfully purch
We have a single entitlement in our project that can be backed by a few different subscriptions (iOS / Android / Web). Cancellation flow works and I can see the hooks being delivered to RevenueCat but I’d like to be able to differentiate between states of “unsubscribed but subscription has not expired” (ie good until end of month) and “unsubscribed” (ie no entitlement). Is there a way to do this? Thanks!
Hi there!I am using this function to purchase products or subscriptions: purchaseProductWith(activity, skuDetails, onError, onSuccess) and I have the following use case: I am trying to purchase a subscription, then immediately after the payment is made, I lose my internet connection. In purchaseProductWith I receive onError → NetworkError, which is ok. Google also sends me an email with the receipt. Then once the internet connection is stable, I am not receiving the Product object from purchaseProductWith → onSuccess, in fact, this method is no longer triggered. If I try to buy again the same subscription it says that I am already subscribed, which is also correct, I already payed for the subscription. The problem is that since we don’t receive back the Product object from purchaseProductWith, we have nothing to send to our server, the server needs this object to validate it with google and to grant the user the necessary permissions to unlock features. We have a lot of clients who hav
On the Github page it seems the createAlias() function will be removed from RC SDK 5.0.Why? We use this function in our app to let users restore their purchase when switching phones or accounts. Without this function we would need to do this manually for every user via email customer support. Ofcourse this does not scale.Is there a alternative to createAlias() in the 5.0 SDK?
Currently, the paywall in our app is only shown to users who are logged in, so we do not need to deal with anonymous users. However, we are introducing Apple offer codes and we want to support the URLs with the offer code embedded. I am hoping this flow will work: User clicks on the URL with the Apple offer code embedded User redeems the code User downloads our app and registers with us, we create a user ID for them We call setup from the Flutter SDK with the user ID At this point, if we make a call to GET /subscribers/app_user_id with the new user ID, will it return the entitlement that was granted using the offer code? Will setup have aliased the anonymous ID with our new user ID? Thank you very much for your help!
Hello,My code below gets the following build errors.None of the following functions can be called with the arguments supplied.Cannot infer a type for this parameter. Please specify it explicitly.I am copying from the Android set up guide and can’t see what I am doing wrong. Any guidance would be greatly appreciated. fun attemptPurchase(inActivity: Activity, forPackage: Package) { Purchases.sharedInstance.purchasePackage(inActivity, forPackage, onError = { error, userCancelled -> println("Error ${error.localizedMessage}") }, onSuccess = { product, customerInfo -> } )}
Does anyone know how to clear these issues/errors from the swift package?The don’t appear to be obstructing anything, and only appeared when migrating to the 4.0 SPM, the project still build/runs (seemingly) without issue.
We are going to use RevenueCat to sale our macOS application using only Stripe.I followed your documentation to setup products, offering packages and entitlements.I also installed your SDK (version 3.3).I am however facing the following issue:ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "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).I do not understand why I am getting this issue because this app will be sold outside the Mac App Store. So it raises several questions:I only selling a Mac App outside the MAS, using Stripe supported by RevenueCat and if yes can we use the SDK? If yes, what can be the source of the issue If no, what do you recommend to achieve what we want to do? Thanks for your help,
We wanna implement promo codes (like -20% price for subscription) with Flutter for both Android and iOS platforms, it look’s similar with this question.So, do we have any example?There is no example on how do that in official resources.Very appreciate for the help!
For the last 30 days our app got 137 errors where NSUnderlyingErrorKey is Error Domain=SKErrorDomain Code=0 "(null)", the problem occurs only in production and for different product identifiers. With very few other errors that brings about 0.5% fail to success payment ratio. Is there really something we can do to prevent this issue? What is the usual payment fail to success ratio you see across other apps? What is the conversion from tapping on CTA (for example “Continue”) on the paywall (initiated the appearance of system pop-up with payment details) to Successful payment?
I’m making the transition from one-time purchase app to free with in-app purchase for my app currently on Mac app store/iOS app store.I’m trying to grandfather all users who bought the app before into premium of the app by using originalApplicationVersion the SDK provides in purchaserInfo. Whoever bough the app before the transition will have the originalApplicationVersion be lower than the to-be-released version of the free with IAP app.However, there are quite a number of users who bought the app before but then requested refund.Can I know whether a user had requested and received refund before using RevenueCat SDK?Thanks for helping 🙏
Testing my monthly (silver) subscription in a sandbox environment using Flutter. When I try to subscribe (using a test card) on the Google Play store, I get the selected entitlement and the status of isActive as true. Everything works as expected.However, when the subscription auto-renews, post that I see the entitlement info but the isActive flag becomes false. When I try to purchase the subscription again from the store, I get a message that the subscription is already active.Here is the dump of the purchaseInfo object:{entitlements: EntitlementInfos{all: {silver: EntitlementInfo{identifier: silver, isActive: false, willRenew: true, periodType: PeriodType.normal, latestPurchaseDate: 2022-01-18T22:46:29.000Z, originalPurchaseDate: 2022-01-18T22:46:29.000Z, expirationDate: 2022-01-18T22:53:25.000Z, store: Store.playStore, productIdentifier: silver_monthly, isSandbox: true, unsubscribeDetectedAt: null, billingIssueDetectedAt: null}}, active: {}}, latestExpirationDate: 2022-01-18T22:53:2
Hello,I have an Android app and I have this issue with transferring subscription. My app initially purchases a subscription as an anonymous user and then later on the users can bind this subscription to their email. To do so I use the login function of the SDK, however, while the server callback returns successfully and it passes, when I try to access the entitlements info it always fails ( nothing is found). When you try again with the anonymous user, the entitlements are there which I assume means the subscription has not been transferred, I’ve also tested with listening for the UpdatedPurchaserInfoListener but I don’t receive any callbacks.I’m using v3.3. Is this kind of a deprecation bug( now that v3.4 is out), or am I missing something here?
As RC 3 is available: When is 5.0.0 planned to be stable?
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.