I had issues with passing review for the app. The story below is described, probably a little bit messy, but anyway it may be helpful for somebody who experienced similar issues
Initially situation was described at Errors on Apple app reviewer’s device during the app review when trying to connect to Azure SQL Server Db. The copy follows.
Initial post on StackOverflow. 2019 Sep 28 at 16:44
I tried to release the iOS app in the Apple App Store. But it failed the review.
The app connects to Azure SQL Server DB on startup. It is implemented in C# Xamarin.Forms.
Initially (build x.x.x.0), I posted the app with following errors reported by reviewer:
"Snix_Connect (provider: SNI_PN7, error: 35 - SNI_ERROR_35)"
"Snix_Connect (provider: SNI_PN7, error: 40 - SNI_ERROR_40)"
I search the issue and tried to reproduce it. I concluded that this usually happened when there are some issues with the Internet connection. I was able to reproduce it in the following 2 cases:
Disconnect WiFi router from the Internet, but preserve switched on, and the iPhone still connected to this router.
Playing with VPN on iPhone. And while VPN is in progress of connection, I also tried to log in at this moment. This is not a robust method of reproducing the issue, but sometimes I got the error message above.
After this, I published the build on TestFlight. This is to test exactly the same binary as I uploaded for review. One of the teammates tested it on his device as well, and it worked fine on both devices: mine and him. For completeness of the information, the app also worked fine on Android devices.
To make the error message more user-friendly I did the following. If exception contains the errors above (with SNI_PN7), I replaced it with the following before showing to the user “Wi-Fi may be switched on, but not connected to the Internet, or Internet connection misconfigured”.
In the current build, I have added the button “View report details” near error message. If the user taps this button he gets a page with stack trace and button “Copy report to clipboard”. I asked reviewed, I also attached the file with screenshots on how to tap the button, and how to scroll page with the report and copy text to the clipboard. If he gets an error then I want him to copy the error report and share it with me.
After posting this last version, the reviewer completely ignored my request to share error details, and just attached a screenshot with the error message:
“Several errors occur: * Can't connect to the database. This may occur when there are issues with an Internet connection, unstable Internet connection, misconfiguration of firewall, VPN or antivirus, or issues with DB server. Please check Internet connection and configuration, and try again. * Error on checking connection to the database * Wi-Fi may be switched on, but not connected to the Internet, or Internet connection misconfigured (Ul code: 2)”
The reviewer just responded to me:
“We discovered one or more bugs in your app when reviewed on iPad running iOS 12.4.1 on Wi-Fi. Next Steps: To resolve this issue, please run your app on a device to identify any issues, then revise and resubmit your app for review. If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work. For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.”
Nothing useful for me.
Note, in previous builds reviewer several times repeated me, that login/password is incorrect. Then I wrote to him directly in review note:
“In case I provide you wrong login/password (/) to test application, you will get the following error message: «Login or/and password is incorrect», possibly with additional info, but the message is very clear about wrong login/password. All other error messages are not related to the wrong login/password.”
After this, I sent the appeal to the Apple:
“The reviewer does not provide enough info why he/she has issues to login to I added functionality to build x.x.x.5 so that the reviewer can get technical info right from the app, and I asked about this info during the review. But the reviewer didn’t provide any information. It looks like he/she completely ignored what I have asked about in the notes”
There is no response for appeal more than 3 working days.
Note, it was 5-th build I posted for review. Every time the reviewer responses about 1 day. He stops responding to my clarification in the resolution center. It looks like he behaves in a cat-and-mouse way, but not willing to publish the app. I try to publish the app from September 16, I fixed, and clarify what I could suppose may be error cause on the Apple reviewer side. But no obvious progress, and I actually can’t realize what I can do more…
Could somebody give me an idea about what I can do more? What can be wrong with the app? Why reviewer device could have issues to connect to Azure SQL Server? I added details here that I consider essential. But if you need more info, let me know.
Discussion in comments on StackOverflow
For clarification: your mobile app creates a direct connection to a database server? If so, it is possible that the database port is blocked by that Apple reviewer’s in-house firewall. Personally I would not let a mobile or desktop app connect directly to a database server, but have a web server in between that authorizes, validates and handles requests from these apps. This also has the added benefit of using standard ports that are usually not blocked by firewalls and you minimize risk of abuse – tiguchi Sep 28 at 17:13
Yes, the app connects directly to DB with the connection string via EF Core. I also checked Azure SQL Server firewall options to be sure that it is allowed. If reviewer has blocked port, this should be stated somewhere in Guidelines or something like this. I am not sure that this should be a reason to reject application. Thanks for app design notes, I agree with you. The app connection directly to DB was selected for simplicity. Validation done via SQL stored procedures. – sergtk Sep 28 at 17:23
Ok, I’m not going to question the security implications any further, but here’s an idea for a quick and dirty solution: If possible change the database server port to something that is likely not blocked such as port 80, or set up a proxy server that routes traffic from port 80 to that database server – tiguchi Sep 28 at 17:45
Thanks for the idea! I will try this if I still fail to pass the review! – sergtk Sep 28 at 18:12
I passed the review! I don’t know what influenced the positive decisions. Probably my demo with different types of successful logins (Wi-Fi, cellular, Wi-Fi via anonymous VPN) and the phrase in the resolution center: “If you still have issues on the sign in to the application, please ask your system administrator if firewall port 1433 is open to access the Internet. This is needed for the app to connect to Microsoft cloud, otherwise, it will not be able to retrieve data from the database.”. Thanks for your note, probably exact pointing out to 1433 brought successfull review. – sergtk Oct 2 at 21:39