[XCODE] ネットワーク接続が3GかWifiか圏外かを調べる簡単な方法
今日は、iPhoneアプリ制作の内容のうち、ネットワーク接続中に、
現在の接続が3GなのかWifiなのか圏外なのかを判断する方法をブログに書きたいと思います。
自分のアプリ制作中に、WifiならiTunesへのリンクを有効にしたいなぁと思い、 ネットワーク状態を調べる方法を検証したので、その内容を書きたいと思います。
Reachability.hとReachability.mを、以下のリンクからダウンロードできます。
Reachability @developer.apple.com
また、以下のフレームワークを追加する必要があります。
私はこれを知らずに、起動時にリンクエラーとなり、何が不足しているのかかなり困りましたw。
「SystemConfiguration.framework」
まずは接続確認を行いたいサーバーを引数に指定して、インスタンス化します。
続いて、ネットワーク状態を知りたい時に、以下のようにメソッドを実行するとネットワーク状態を取得できます。
他にも、ネットワーク状態が変わったら通知を受けるNotificationでの利用も可能です。
その使い方は、以下のブログ記事で書きました。もしご興味あれば、ご覧頂けると幸いです。
- [XCODE] ネットワークが圏外になったり、圏外から圏内に変わった事をアプリ上で知る方法@YoheiM.NET
Reachability @developer.apple.com
ネットワーク系の処理はかなりの初心者ですが、ソースコード理解から始めて見たいと思ってます。
本記事がご参考になっていれば幸いです(・∀・)
自分のアプリ制作中に、WifiならiTunesへのリンクを有効にしたいなぁと思い、 ネットワーク状態を調べる方法を検証したので、その内容を書きたいと思います。
まずは準備から
まずは、ネットワーク状態を調べる為の、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
最後に
こーゆうクラスもさらさらと実装できるようになりたいなぁと思う今日この頃です(*´∇`*)ネットワーク系の処理はかなりの初心者ですが、ソースコード理解から始めて見たいと思ってます。
本記事がご参考になっていれば幸いです(・∀・)