【iOS】Reachability:ネットワーク接続状況の確認
こんばんは。mashiです。今回はネットワークの接続状況を確認する方法についてです。接続状況に応じて実行処理を分けるのに利用したいと思います。
ライブラリをダウンロード
以下のリンクからAppleが提供しているライブラリ「Reacheability」をダウンロードします。
iOS Developer Library Reachability
ディレクトリ内のReachability.h、Reachability.mのみをプロジェクトへ追加します。
フレームワークを追加
「Targets」->「Build Phases」->「Link Binary With Libraries」から「SystemConfiguration.framework」を追加します。
サンプルコード
接続状況に応じてNSNotificationで都度通知して制御する設定にします。
- (void)viewDidLoad { // 接続状況が変化したときに,呼ばれるメソッドを設定 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; // ホスト self.hostReachability = [Reachability reachabilityWithHostName:@"www.apple.com"]; [self.hostReachability startNotifier]; [self updateInterfaceWithReachability:self.hostReachability]; } // 接続状況が変化したときに,呼ばれるメソッド - (void) reachabilityChanged:(NSNotification *)note { Reachability* curReach = [note object]; NSParameterAssert([curReach isKindOfClass:[Reachability class]]); [self updateInterfaceWithReachability:curReach]; } - (void)updateInterfaceWithReachability:(Reachability *)reachability { if (reachability == hostReachability){ NetworkStatus netStatus = [reachability currentReachabilityStatus]; switch (netStatus){ case NotReachable: { // ホスト(接続先)に繋がらない break; } case ReachableViaWiFi: { // WiFi回線接続の処理 break; } case ReachableViaWWAN: { // 3G回線接続の処理 break; } } } }
コメントをどうぞ