2012-02-01 14 views
2

私はipadアプリにインターネットがあるかどうかをチェックする方法に関するフォーラムを通して検索しています。私は他のView Controllerを備えたシンプルなwebviewプロジェクトを作成しました。インターネットが利用できないときにUIAlertメッセージを表示する必要があります。私の場合は、アプリケーションを実行するとメッセージが表示されます。私はインターネットでアプリケーションを実行し、インターネットを非アクティブにすると、UIAlertメッセージが表示されません。つまり、ビューを切り替えると、インターネット接続が表示されなくなります。ios5を使用してiPadアプリのインターネット接続をテストする

私は私のプロジェクトで実施するこの方法を踏襲しています(すみません私のミスこれは私が続いリンクです)http://mozymac.com/forums/f54/how-check-if-there-internet-connection-iphone-os-devices-595/ [これは新しい編集した質問である]

を離れて、私は前の質問のいくつかを行ったことから、 Stackoverflowフォーラムのような例:How to check for an active Internet connection on iOS or OSX?

しかし誰もが独自のバージョンを持っています。もしios5の方がずっと更新された方法があれば、これを達成する方法のxcode 4.2.1が役に立ちます。

ありがとう

答えて

2

ReachibilityアプリケーションですUIWebViewにリクエストをロードしようとしていますか?

ベストプラクティスは読み込みを開始し、UIWebViewDelegate/NURLConnectionDelegateを使用して、NSEエラーを調べて何が間違っているかを確認することです。ネットワークに障害が発生した場合は、ドメインがNSURLErrorDomainに等しいエラーが表示されます。エラーコードは、問題の内容を示します。NSError codes enumを参照してください。

最初のエラーの後で、インターネット接続がいつ再び利用可能になるかを確認するための到達可能性を開始します。それとも簡単に、ユーザーに再試行させてください。

Reachabilityコードを使用すると、実際にはオーバーヘッドが発生します。インターネットが利用可能かどうかを確認するには時間がかかりますが、これは実際の接続の設定にも使用できます。

あなたがUIWebViewを使用しているので、あなたは、エラーが通知されるように、次のデリゲートメソッドを実装する必要があります。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    if (![[error domain] isEqualToString:NSURLErrorDomain]) { 
     // not a nsurl error, take other appropriate action 
     return; 
    } 

    NSInteger code = [error code]; 
    // show appropriate error to user, based on code 
} 

この委任方法では、必要なものを達成するために必要な作業をすべて行う必要があります。 Appleが提供するReachabilityのコードのコードを使用して、自分でリクエストを再試行したり、ユーザーにメッセージを表示したり、到達可能性の変更を聞いたりすることができます。

+0

あなたの返信ありがとう、これを理解するためにこれを使用する方法のサンプルコードを提供することは可能ですか? – 125369

+0

UIWebViewエラーデリゲートの例を追加しました。 –

+0

例を提供してくれてありがとうJoris – 125369

1
インターネット接続を確認する

最善の方法は、あなたが実際にする前に、インターネット接続をチェックする理由はあり

link

さも

+ (BOOL)isNetworkAvailable 
{ 
    CFNetDiagnosticRef diag;   
    diag = CFNetDiagnosticCreateWithURL (NULL, (CFURLRef)[NSURL URLWithString:@"www.apple.com"]); 

    CFNetDiagnosticStatus status; 
    status = CFNetDiagnosticCopyNetworkStatusPassively (diag, NULL);   

    CFRelease (diag); 

    if (status == kCFNetDiagnosticConnectionUp) 
    { 
     //NSLog (@"Connection is up"); 
     return YES; 
    } else { 
     NSLog (@"Connection is down"); 
     return NO; 
    } 
} 
+0

期限が切れています。 –

+0

iPv6ネットワークでは動作しません。 – Suresh

関連する問題