2011-02-03 14 views
4

私はAppleの到達可能性コードを使用するアプリケーションを持っています。私がアプリからタブアウトすると、飛行機モードをオンにし、アプリに戻り、接続が利用できないというメッセージが正しく表示されます。飛行機モードをオフに戻してアプリに戻っても、接続が利用できないというメッセージが表示されます。特定の問題のコードは以下です:無線が利用可能な場合でもSCNetworkReachabilityGetFlagsは0を返します。

NetworkStatus status = kNotReachable; 
if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags)) 
{ 
    status = [self networkStatusForFlags: flags]; 
    return status; 
} 

声明とフラグが0(kSCNetworkReachabilityFlagsTransientConnection)されて終わるならば、私は中に入ります。それはどういう意味ですか?誰かがこれを経験しており、誰かが回避策や修正を知っていますか?あなたが数時間それを遊んでいた...

+0

kSCNetworkReachabilityFlagsTransientConnectionの値は1 << 0(1)です。 0になっています。これは、フラグが設定されていないことを意味します。 – jhabbott

+0

@PsychoDadどのようにして問題を解決しましたか? – Sandeep

+0

@Sandeep問題は、本当に悪い会社のWiFiにあったと思います。私は今1年以上で問題を見ていません。 – jjxtra

答えて

10

これは、ホスト名にプロトコル指定子(hostnameではなくhttp://hostnameなど)を指定することによって発生することが判明しました。この問題が解決するかどうかを確認するために、ホスト名だけを指定してみてください。

+1

これは私の問題を解決しました。私はUIWebViewでロードするウェブサイトの到達可能性をチェックしていました。到達可能性のためにWebサイトドメインを使用し、その後、UIWebViewの読み込み目的のためにプロトコルによってプリペンドされた同じドメインを使用することで、すべて正常に動作しました。それが以前に働いた理由は分かりません。 iOS5.1.1アップデート後、私にとってもっと厄介になっているようだ。良いアドバイス@jhabbott! – idStar

+0

私たちはホスト名のみを使用しており、いつもされています。実際の問題は、本当に悪い会社のWiFiだったと思う。 – jjxtra

+1

これはいくつかの人々の問題を解決して以来、私はこの答えを受け入れるでしょう。 – jjxtra

0

あなたが見たようにフラグが受信され、それらが0に終わった場合、これは飛行機モードがオンであることを示します。しかし、このチェックの結果は、少なくとも短期間はキャッシュされているように見えます。これを試してください:あなたのアプリを離れる、飛行機モードをオフにする、モバイルサファリのサイトをヒットしてから、あなたのアプリに戻ります。これにより、キャッシュが無効になることがあります。

1

SCNetworkReachabilityGetFlagsを呼び出した後、ネットワークステータスのキャッシュを避けるためにCFReleaseを呼び出すことも重要です。以下の実装を参照してください。

SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL、 host_name);

SCNetworkReachabilityFlags flags; 
success = SCNetworkReachabilityGetFlags(reachability, &flags); 
bool isAvailable = success && (flags & kSCNetworkFlagsReachable) && 
!(flags & kSCNetworkFlagsConnectionRequired); 
CFRelease(reachability); 
if (isAvailable) { 
    NSLog(@"Host is reachable: %d", flags); 
    return true; 
}else{ 
    NSLog(@"Host is unreachable"); 
    return false; 
} 
+1

この回答は私の問題を解決しました。 Appleは本当にその文書に言及する必要があります。 – Chris

0

私は同じ問題を抱えていましたが、私がシミュレータでテストしていたときにのみ起こっていました。私は2日間過ごした後、デバイスでテストしたところ、魅力的でした! 理由がわかりません...

関連する問題