Xamarin.iOSでインターネットに接続しているか確認したい
Xamarinにサンプルあるよ。
元ネタはappleのサンプルでしょうか。サイト名がappleからgoogleに変わっているのがなんとも。
これコピペで完了です。 と思っていた時期が私にもありました。
実際にこれでいいと思って実装していたんですが、ちょっと私の予想と違う動作になりました。
無線LANルーターとつながっていてそのルーターが外部とつながっていないとき
こんな状態ですね。 ルーターもって圏外に行っていたり、そもそもWifiしかないiPadを使っているときにこんな状況になるかもしれません。
この時サンプルの
Reachability.RemoteHostStatus();
などは失敗してほしいんですが、正常のままです。(Appleのサンプルも同様の動作です) 内部で何をやっているのかわかりませんが、インターネットにつながっている状態が欲しいのでこれではだめです。
適当に作ってみた
[HTTP Ping]あたりでググった結果で適当に作りました。
try { var request = (HttpWebRequest)WebRequest.Create("http://www.google.com"); request.Timeout = 3000; request.AllowAutoRedirect = false; request.Method = "HEAD"; using (request.GetResponse()) { Console.WriteLine("Network is OK"); } } catch (Exception exp) { Console.WriteLine("Network is NG."); }
もっとスマートな方法があったら是非教えてくださいお願いします何でもしますから。