iPhone アプリ上で、ネットワーク接続可能かどうかを検知する方法です。
1、Appleのデベロッパーサイトにある「Reachability」というライブラリをダウンロード
2、ダウンロードしたら、中にある下記のファイルを自分のプロジェクトへ追加する
• Reachability.m
• Reachability.h
3、Reachabilityの中で使用しているであろう、「SystemConfiguration.framework」を既存のFrameworkから追加だけする
4、検知したい所での.hファイル編集
#import "Reachability.h"
@class Reachability
5、.mファイルの編集
// 自動検知するためにNotificationに登録する
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
// 指定したホストに接続確認する場合
Reachability *hostReach = [[Reachability reachabilityWithHostName: @"www.yahoo.co.jp"] retain];
[hostReach startNotifier];
[self updateInterfaceWithReachability:hostReach];
// インターネットに接続できるか確認
Reachability *internetReach = [[Reachability reachabilityForInternetConnection] retain];
[internetReach startNotifier];
[self updateInterfaceWithReachability: internetReach];
// Wifi接続かどうか確認
Reachability *wifiReach = [[Reachability reachabilityForLocalWiFi] retain];
[wifiReach startNotifier];
[self updateInterfaceWithReachability: wifiReach];
単にネットワークに接続できるかどうかの確認であれば、
「reachabilityForInternetConnection」を使えばいいと思う。
検知した際に呼ばれるメソッドを追加
- (void) reachabilityChanged: (NSNotification* )note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
[self updateInterfaceWithReachability:curReach];
}
接続可能かどうかで処理を分ける
- (void) updateInterfaceWithReachability: (Reachability*) curReach
{
NetworkStatus netStatus = [curReach currentReachabilityStatus];
if(netStatus == NotReachable) {
if(imageView == nil || self.tabBarController.selectedIndex == 0 ) {
UIImage *image = [UIImage imageNamed:@"no_denpa_bg.jpg"];
imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0,20, image.size.width,image.size.height);
[self.window addSubview:imageView];
}
}
else {
[imageView removeFromSuperview];
[self.window addSubview:tabBarController.view];
}
}
以上
0 件のコメント:
コメントを投稿