2012/07/07更新

[XCODE] ネットワーク接続が3GかWifiか圏外かを調べる簡単な方法

このエントリーをはてなブックマークに追加            

今日は、iPhoneアプリ制作の内容のうち、ネットワーク接続中に、 現在の接続が3GなのかWifiなのか圏外なのかを判断する方法をブログに書きたいと思います。
自分のアプリ制作中に、WifiならiTunesへのリンクを有効にしたいなぁと思い、 ネットワーク状態を調べる方法を検証したので、その内容を書きたいと思います。

iPhone Reachability



まずは準備から

まずは、ネットワーク状態を調べる為の、Appleが作成している?クラスをインポートします。
Reachability.hとReachability.mを、以下のリンクからダウンロードできます。
Reachability @developer.apple.com


また、以下のフレームワークを追加する必要があります。
私はこれを知らずに、起動時にリンクエラーとなり、何が不足しているのかかなり困りましたw。
「SystemConfiguration.framework」



通信状態を知る

Reachabilityクラスの使い方は何種類かあるようですが、今回は簡単な方法で状態を得たいと思います。
まずは接続確認を行いたいサーバーを引数に指定して、インスタンス化します。
Reachability *reachability = [Reachability reachabilityWithHostName:@"itunes.apple.com"];

続いて、ネットワーク状態を知りたい時に、以下のようにメソッドを実行するとネットワーク状態を取得できます。
NetworkStatus status = [reachabilitycurrentReachabilityStatus];
if (status == ReachableViaWiFi) {
  // wifi接続時
} else if (status == ReachableViaWWAN) {
  // 3G接続時
} else if (status == NotReachable) {
  // 接続不可
}
ってな感じです。

他にも、ネットワーク状態が変わったら通知を受けるNotificationでの利用も可能です。
その使い方は、以下のブログ記事で書きました。もしご興味あれば、ご覧頂けると幸いです。

- [XCODE] ネットワークが圏外になったり、圏外から圏内に変わった事をアプリ上で知る方法@YoheiM.NET




参考資料

参考資料は、今回はReachabilityのソースコード上のコメントや実装内容です。ヘッダファイルは読みやすいはず!
Reachability @developer.apple.com




最後に

こーゆうクラスもさらさらと実装できるようになりたいなぁと思う今日この頃です(*´∇`*)
ネットワーク系の処理はかなりの初心者ですが、ソースコード理解から始めて見たいと思ってます。
本記事がご参考になっていれば幸いです(・∀・)






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。