Apple App Store rejected my app with this message:
We discovered one or more bugs in your app when reviewed on iPad running iOS 11.4.1 on Wi-Fi connected to an IPv6 network.
Because of this I (too late) discovered that since June 2016 Apple requires that every app submitted to App Store should support IPv6-only networking, as written here https://developer.apple.com/support/ipv6/:
Starting June 1, 2016, all apps submitted to the App Store must support IPv6-only networking. A majority of apps will not require any changes as IPv6 is already supported by NSURLSession and CFNetwork APIs. However, if your app utilizes IPv4-specific APIs or hard-coded IP addresses, you will need to make changes. Be sure to test for IPv6 compatibility before submitting your app to the App Store for review.
The point is that my app doesn't have hardcoded IP addresses and for all the web calls I simply instantiate an HttpClient with default implementation; I already submitted other app based on the same one for other clients, but it's the first time that they rejected it for this reason. Moreover I don't have a way to do a test with IPv6 because my ISP doesn't support it, and also APN of my two mobile sims (internet.wind and mobile.vodafone.it) doesn't work in IPv6.
Is it possible that Apple does this test only once in a while and with other 5/10 submissions I was simply lucky?
After I discovered that the problem was due to the server, that during night (my night, afternoon in USA) was very slow, but reading documentation I've found this, that could be useful to other people: https://learn.microsoft.com/en-us/xamarin/cross-platform/macios/http-stack
April, 2018 – Due to increased security requirements, including PCI compliance, major cloud providers and web servers are expected to stop supporting TLS versions older than 1.2. Xamarin projects created in previous versions of Visual Studio default to use older versions of TLS.
In order to ensure your apps continue to work with these servers and services, you should update your Xamarin projects with the NSUrlSession setting shown below, then re-build and re-deploy your apps to your users.
So yes, for HttpClient implementation managed is the default option, and it's almost sure that if you have an old application on the iOS project settings you'll find that one. But Xamarin now suggests to use the NSUrlSession, so to avoid problems in the future is probably good to change it.
But it's almost sure that if you don't have any hardcoded IPv6 address you don't have to change anything in your code: https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html
If you’re writing a client-side app using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses. If you aren’t connecting by name, you probably should be.