2016-08-25 10 views
3

デバイスがWi-Fiに接続されていてもモデムでインテネット接続されていない場合のiOSのインターネット接続を検出する方法を知りたい。Wi-Fiに接続されているがintenernetが接続されていない場合のインターネット接続を検出する方法:iOS

私はリンゴとAFNetworkingの到達可能性を使用しましたが、モデムにはインターネットが動作していないにもかかわらず、接続のみをチェックして接続フラグを返します。

+1

おそらくあなたはアプリを書いていて、バックエンドにアクセスできるかどうかを知りたいでしょうか?その後、バックエンドを呼び出して失敗を処理してください。 – jonrsharpe

+0

@jonrsharpe私はちょうど接続がないときにWeb APIを押すことを避けたいです。 –

+0

接続がない場合でもWeb APIを使用できないため、問題はありません。 – jonrsharpe

答えて

1

お使いのデバイスが実際にインターネットに接続されていることを確認するためには、少なくともあなたは(stackoverflow.com O google.comなど)いつでもサーバーで実行されている&までへのpingを試してみて下さい。

もちろん、@ jonrsharpeさんが提案したように、アプリがWebサーバーに到達できるかどうかを確認するためにこのチェックが必要な場合は、Webサーバーにもpingなどが必要です。

しかし、確かに動作しているWebサーバー(Googleなど)へのpingは、お使いのデバイスがインターネットに接続している(つまりモデムがインターネットに接続できる)現在あなたのサーバーに到達できないことをユーザーに知らせるためにアプリに警告を表示します。

コードに行く、あなたはReachability library

以下のような
Reachability *reachability = [Reachability reachabilityWithHostName:@"stackoverflow.com"]; 
NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 

との接続状態を確認してからnetworkStatus変数をチェックしてみてください:あなたは、インターネットへのアクセスを持っていない0場合は、そうでないYES、そう

if(networkStatus==0) { 
    // no access to internet 
} else { 
    // you have access to internet 
} 
+2

私はwifi経由で接続しましたが、インターネットにアクセスすることはできませんでした。まだ接続フラグが表示されています –

+0

多分[この回答](http://stackoverflow.com/a/3597085/3178454)でも私よりも明るくなります:) – ddb

1

私は到達可能性を介してホストを押すことで解決策が見つかりました: -

が誰かのために役に立つかもしれません。

-(BOOL)isCheckConnection { 
    Reachability *rc = [Reachability reachabilityWithHostName:@"www.google.com"]; 
    NetworkStatus internetStatus = [rc currentReachabilityStatus]; 

    if(internetStatus==0) 
    { 
     //@"NoAccess"; 
     return NO; 
    } 
    else if(internetStatus==1) 
    { 
     //@"ReachableViaWiFi"; 
     return YES; 
    } else if(internetStatus==2) 
    { 
     //@"ReachableViaWWAN"; 
     return YES; 
    } 
    else 
    { 
     //@"Reachable"; 
     return YES; 
    } 
} 
関連する問題