My Mac app is a free download and offers a non-consumable IAP to purchase the full app (using RevenueCat of course).
About a third of the time when submitting my app to App Review, the reviewer is unable to complete the purchase: they go through the correct purchase flow but ultimately the IAP never becomes unlocked in their testing sandbox, so the update is rejected.
I’ve never experienced this myself in my testing and in production on the App Store, this has never been a problem. However dealing with these rejections are a bit of a nightmare because it’s not clear what the problem is with the reviewer’s sandbox environment, and what I can do on my end to assist.
Has anyone else faced a similar issue?
Also unable to pass review for macOS native app.
I have an app that is available for macOS(native) and iOS. The app has non consumable IAP(lifetime) and subscriptions(monthly+annual). This is the first time I submitted the app with RevenueCat SDK(Adapty was used until recently). The reviewer is unable to complete the purchasing of subscription. Here is the message:
The purchase flow works well on my machine but the app is unable to pass review. It was rejected 2 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.
Interesting, thanks for sharing your experience Alexander. I might have to try getting rid of RevenueCat integration, to see if that was the problem.
I saw that Alexander posted a similar thread here:
If the app reviewer is on iOS15, they may have to create a new sandbox account for purchases to work. We’ve heard of reports in the past about the weird iOS15 behavior and creating a new sandbox account worked for developers. It may be worth adding this as a note to the reviewers.
No, in both Alexander’s case and my own case it’s our Mac apps that are being rejected, not iOS apps.
But it’s helpful to know from that thread that RevenueCat is indeed the problem, and switching to an alternative service is a way around the rejection.
Would be wonderful to somehow identify the problem on your end though, so that RevenueCat integration no longer causes App Review rejections.
Just to confirm, you’re not programmatically calling the restore method within the app correct? It would be worth asking the reviewer to create a new sandbox account since the review environment can be finicky. If testing is working properly while you’re in sandbox, it should also work on the review environment since they both use sandbox. We’ve heard of developers submitting the same binary multiple times before Apple approves the app, so it’s not uncommon to hear of these rejections and is sort of like a right of passage going through this process.
Is everything working correctly while you’re testing? And have you tested purchasing all of your product s yet?
Everything works perfectly during with sandbox accounts (which I demonstrated to the reviewer in screen recordings), and no customers have ever complained of issues in the live build on the App Store. But this doesn’t convince the reviewer to let the build pass in my experience.
Not sure what you mean by rite of passage - it’s pretty demoralizing being rejected multiple times for an issue that doesn’t have an obvious solution (other than dropping RevenueCat integration, apparently). I did try asking the reviewer to make a new sandbox account, though it didn’t help get the build through review - they still couldn’t unlock the required IAPs. Last update I ended up pleading with them to just let the update pass as it contained a critical bug fix, and they kindly relented.
I do offer a “Restore Purchase” button, which programmatically calls restoreTransactions, but this is not triggered automatically.
Sorry to hear that this a frustrating process. I’ve heard from some developers that their apps get rejected up to 12 times before Apple approves them, even though the same binary was submitted with nothing changed at all and the app eventually was approved. Unfortunately the numerous app rejections this isn’t an issue isolated to RevenueCat, but also those using native StoreKit.
You mentioned that they weren’t able to unlock the required IAPs. Is the App Review team able to provide any additional information about the rejection? For example, if they encountered any errors while going through the purchase flow. As well as device information.
It won’t hurt to send debug logs to your server to check out the log messages when the reviewer is testing purchasing. The easiest way is to hook up your own log handler is using setLogHandler.
When was the last time you submitted a binary for review? Have you also checked out our documentation geared toward App Store Rejections yet? For reference: https://docs.revenuecat.com/docs/app-store-rejections