この質問は他の多くの質問と重複しているように思われるかもしれませんが、ここでは単純なケースが十分に説明されていないように感じます。Android と BlackBerry のバックグラウンドから来ると、HTTPUrlConnection
接続が利用できない場合はリクエストを即座に送信しても失敗します。これは完全に正常な動作のように思えますが、iOS ではこれをエミュレートしていないことに驚きましたNSURLConnection
。
Apple (およびこれを拡張した他の企業) は、Reachability
ネットワークの状態を判断するのに役立つクラスを提供していると理解しています。 最初にこれを見て嬉しくなり、 のようなものが表示されると完全に予想していましたbool isNetworkAvailable()
が、驚いたことに、通知の登録とコールバックを必要とする複雑なシステムと、一見不必要な詳細がたくさん見つかりました。 もっと良い方法があるはずです。
私のアプリは、接続なしなどの接続障害をすでに適切に処理しています。ユーザーには障害が通知され、アプリは処理を続行します。
したがって、私の要件はシンプルです。すべての HTTP リクエストの前に呼び出して、実際にリクエストを送信する必要があるかどうかを判断できる単一の同期関数です。理想的には、セットアップは必要なく、ブール値を返すだけです。
これは本当にiOSでは不可能なのでしょうか?
ベストアンサー1
もう少し調査して、より最新の解決策で回答を更新しています。すでにご覧になっているかどうかはわかりませんが、Apple から提供されている優れたサンプル コードがあります。
サンプルコードをダウンロードするここ
プロジェクトに Reachability.h および Reachability.m ファイルを含めます。ホストの到達可能性、WiFi や WWAN による到達可能性などを判断する方法の例については、ReachabilityAppDelegate.m を参照してください。ネットワークの到達可能性を非常に簡単にチェックするには、次のようにします。
Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
if (networkStatus == NotReachable) {
NSLog(@"There IS NO internet connection");
} else {
NSLog(@"There IS internet connection");
}
@BenjaminPiette さん: プロジェクトに SystemConfiguration.framework を追加することを忘れないでください。