Reachabilityサンプルを使用すると様々なネットワーク接続状態をチェックできます。とりあえずWiFiの接続状態だけチェックしたかったので、その部分についてだけ事例を紹介します。
サンプルコードのビルド
- ソースとダウンロードし、 Reachability.h、Reachability.mをプロジェクトに追加する。
- SystemConfiguration.framworkを追加する。
- ARC環境では、プロジェクトの設定でReachability.mにfno-objc-arcオプションを追加する。
これを行わないと次のメッセージを含むエラーが発生する。
Cast of C pointer type 'void *' to Objective-C pointer type 'NSObject *' requiresa bridged cast'NSAutoreleasePool' is unavailable: not available in automatic reference counting mode'release' is unavailable: not available in automatic reference counting modeARC forbids explicit message send of 'release'Implicit conversion of Objective-C pointer type 'Reachability *' to C pointer type 'void *' requires a bridged castARC forbids explicit message send of 'autorelease'
アプリケーションデリゲートにロジックを追加する
Reachability *wifiReach;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
....
wifiReach = [Reachability reachabilityForLocalWiFi];
[wifiReach startNotifier];
return YES;
}
- (BOOL)reachableViaWiFi
{
NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
return netStatus == ReachableViaWiFi;
}
以上でアプリケーションデリゲートのreachableViaWiFiメソッドでWiFi接続状態をチェックできるようになります。
WiFi接続状態はいつ変化するかわかりません。必要に応じてチェックします。また、このチェックがOKでも実際のアクセスに失敗する可能性もあります。
0 件のコメント:
コメントを投稿