Вызов «GetFlags» на NetworkReachability всегда возвращает «Reachable», даже если домен не существует. Я приложу полное тестовое решение, но следующий код должен привести к ошибке «Failed ...», но результат «Success = True».Ошибка Xalarin NetworkReachability недопустима.
Код базируется на образце достижимости.
public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
string host = "http://nonsense.test12345679.com";
using (var r = new SystemConfiguration.NetworkReachability (host)) {
NetworkReachabilityFlags flags;
if (r.TryGetFlags (out flags)) {
_label.Text = "Success = " + IsReachableWithoutRequiringConnection (flags);
} else {
_label.Text = "Failed to get flags ";
}
}
}
public bool IsReachableWithoutRequiringConnection(NetworkReachabilityFlags flags)
{
// Is it reachable with the current network configuration?
bool isReachable = (flags & NetworkReachabilityFlags.Reachable) != 0;
// Do we need a connection to reach it?
bool noConnectionRequired = (flags & NetworkReachabilityFlags.ConnectionRequired) == 0
|| (flags & NetworkReachabilityFlags.IsWWAN) != 0;
return isReachable && noConnectionRequired;
}
Если переключить устройство в режим полета, то достижимости правильно возвращается как ложное.
Я тестирую iPad iPad, iOS 9.0.2 и новейший стабильный Xamarin.
Похоже, он использует тот же класс достижимости с некоторыми дополнительными тестами сокетов в классе подключения по протоколу HTTPS: // GitHub .com/jamesmontemagno/Xamarin.Plugins/дерево/ведущий/Связь/Связь/Connectivity.Plugin.iOS. Можете ли вы использовать плагины без Xamarin.Forms? –
Да. Некоторые плагины предназначены специально для Xamarin.Forms, а другие могут использоваться в любом приложении Xamarin. – valdetero