Мое приложение Apple AppStore было отклонено из-за того, что оно не поддерживает сети IPv6.
Вот объявление URL-адреса моего сервера для WebClient. «ipv4» — это IPv4-адрес сервера. Я не добавил его сюда, чтобы оставаться в безопасности.
RemoteServerConnector.Instance.DefaultServerUrl = "http://ipv4/api.php";
Тогда у меня есть этот метод для проверки соединения:
private class MyWebClient : WebClient {
public int timeOut { get; set; }
protected override WebRequest GetWebRequest(Uri address) {
WebRequest w = base.GetWebRequest(address);
w.Timeout = timeOut;
return w;
}
}
public bool checkInternetConnection() {
try {
using(MyWebClient client = new MyWebClient()) {
client.timeOut = ApiUrls.RemoteServerConnectorTestTimeout;
var removeString = "api.php";
var testHttp = DefaultServerUrl.EndsWith(removeString) ? DefaultServerUrl.Remove(DefaultServerUrl.Length - removeString.Length, removeString.Length) : DefaultServerUrl;
using(client.OpenRead(testHttp)) {
return true;
}
}
} catch(WebException ex) {
return ex.Status != WebExceptionStatus.ConnectFailure;
} catch(Exception ex) {
return false;
}
}
Он всегда выдает исключение в сетях IPv6. Я уже пробовал это решение Отклонение Xamarin iOS IPv6 App Store, но оно не т работать. Я также пытался добавить IPv6 вместо IPv4 в переменную DefaultServerUrl. Я также пробовал http://ipv6/api.php, а также http://[ipv6]/api.php
Не удается найти решение для этого типа подключения (WebClient). Я нашел только другие решения с протоколом TCP/IP, и я не хочу менять его в своем приложении.
Я также видел блог Xamarin о IPv6, но я не знаю, что делать. Не удалось добавить ссылку на него из-за разрешений.
Что я должен изменить в своем коде, чтобы он работал? Спасибо за ваше время :)