2012-03-30 13 views
1

私は、ネットワーク接続がなくてもクラッシュしないようにすることで、iPhoneアプリをより堅牢にしたいと考えています。今、アプリケーションは、アプリケーションデリゲートを介して、すぐに起動時に接続しようとします。 Wi-Fiまたは携帯電話が利用可能な場合は問題ありませんが、ネットワーク接続が見えない場合はクラッシュします。私はこのサイトを見回してきて、私の問題にかなり合ったものは見つけていません。iphoneの接続状況を診断する

if (isConnection) { 
    - sendSynchronousRequest for json data I'm using 
    - manipulate the data, etc., and continue with normal operations 
} else { 
    - send an output message to a view controller, 
     letting the user know what's wrong. 
} 

私が(確かに抽象を分離するように見えることはできません:私はObjective-Cの擬似「isConnection」と同じ、または類似した何かのように、それはコードの単純な行する必要があります感じています) "isConnection"は、私が探している条件です。誰もこのトピックに関する経験やアドバイスを持っていますか?

答えて

0

到達可能クラスは非常に使いやすいです。

-(BOOL)isConnection { 
    Reachability *reach = [Reachability reachabilityWithHostName:@"www.google.com"]; 
    //replace www.google.com with your own host you're checking for 
    NetworkStatus hostStatus = [reach currentReachabilityStatus]; 
    if (hostStatus != NotReachable) { 
     //There are also other status enums like 
     //ReachableViaWiFi 
     //ReachableViaWWAN (3G/LTE) 
     //if you need to detect if user is on cellular, act accordingly 
     return YES; 
    } 
    return NO; 
} 

その後、あなたのメソッドを呼び出すことができます:

if ([self isConnection]) { 
    //do something 
} else { 
    //no connection, inform user 
} 
クラスファイルは、ここでは、必要なコードだあなたはまた、SystemConfiguration.frameworkに

を追加する必要がhttps://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

ダウンロードはこちら

+0

ありがとう、これはとても良いです!まさに私が探していたもの。 – pereirap

+0

あなたは私の答えを受け入れない理由は何ですか?あなたが受け入れた同僚はプロジェクトへのリンクを掲載しましたが、サンプルコードはありませんでした。 – Justin

+0

申し訳ありません - 私がやったことを理解していないこともあります。あなたの答えはこの問題の理解にも貢献しました。私は容認していないことを意味するものが何かを知りません...オク、緑色のチェックマークですか?私は今それを確認し、私がやったことをどのように元に戻すことができるか教えてください!私は全くあなたを嫌うつもりはありませんでした!ごめんなさい!私はこのサイトが関係しているちょうどnewbです。 – pereirap

0

Appleが提供するReachabilityクラスはReachability sample applicationで使用できます。接続されているかどうかだけでなく、どのように接続されているか(WiFi、携帯電話、まったく接続していない)接続状態が変わったときに通知を登録することもできます。

上記で説明したコードを開始する前に接続ステータスを確認することはできますが、接続がないとアプリがクラッシュする理由を調査して解決する必要があります。リクエストの途中でいつでも接続を失う可能性があります。また、アプリをクラッシュさせたくない場合もあります。

関連する問題