We got rejected by the review team again today for the same issue. I have also found a GitHub issue thread of devs facing the same struggle dating all the way back to 2014 (just Google search "GitHub Rejected for receipt validation"). It is disappointing to see that this inconsistency issue has tormented countless devs in the past and will probably continue to do so in the future because Apple just turns a blind eye.
Also, in case this helps: one of the devs in the GitHub thread did suggest the workaround of using a timer to avoid doing receipt validation on the first 2 weeks. This will bypass the review team's scrutiny, but it does expose the app to receipt exploit during that 2 week period. It is a bitter sacrifice to make, but we may end up doing it because it is more important to us to have reliable release schedule for our users, and I could not think of a better solution right now.
Post
Replies
Boosts
Views
Activity
Sadly, we went through another round of rejections yesterday for 4 of our apps, even though we now implemented a prompt to inform the user why we are updating the receipt before we query it with the message: "We did not find any App Store receipt on this device. Please enter the credentials of the Apple ID that owns this app to update the receipt."
The App Store review team attributed the rejection to "Guideline 2.1 - Performance - App Completeness" and gave the reason "We discovered one or more bugs in your app. Specifically, an error message triggered when tapping on a login method. "
In contrast, another app of ours was able to pass the review even though it also queries the receipt and serves the same prompt before the query.
It seems to me that some members of the review team is oblivious about the fact that it is normal for an app to not have an appStoreReceipt on launch because it is not installed from the App Store, and they are surprised when the app calls SKReceiptRefreshRequest and asks them to sign in.
What are the developers supposed to do when certain members of the App Store review team are out of touch with their own technical requirements?
Thank you for the reply, Rich. The tech note 2413 QA is great, and I agree that it is a good practice to inform the user that the app intends to query the receipt and ask for confirmation before showing the authentication dialog.
May I suggest that on the [Verify Receipts documentation page](
https://developer.apple.com/documentation/storekit/in-app_purchase/choosing_a_receipt_validation_technique?language=objc), a Best Practice link can be added to link to the tech note 2413 QA so that developers can know to follow that? In a perfect world every developer will read all the legacy tech notes, but that is far from the reality, where developers like us would get rejected by the App Review team and had to go through a 3 week back and forth appeal to get on the phone with a representative to eventually pass the review.
I updated to XCode 11.7 today and the problem seemed to be resolved now.
Also having this issue. My steps of replications are:
Use XCode to create a new Single View App project for iOS app
Change the Bundle Identifier to match the app that was having this issue, and call the initWithReceiptProperties API such as
SKReceiptRefreshRequest *refresh =[[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil];
[refresh start];
3. Put a breakpoint at the initWithReceiptProperties call and run the project on an iOS device. Log in to a sandbox test account that has not purchased any IAPs from the app before
4. Observe that once the API is called, it will trigger the error prompt "There is no information available for In-App Purchases. Try again later. 21105"
I was also troubled by this. My CI jobs stopped working even though and I was usingsecurity unlock-keychain -p PASSWORDHowever, later I found that my password was not updated after the last time I changed it, so for anyone that is having issues with this, double-check that your password is correct!