0

重複の可能性:
インターネット接続を確認する - iOS SDK

iOSで接続を確認するための最も速くて簡単な方法を探しています。

私はこれを見つけました:

-(BOOL)connectedToNetwork  {
    NSURL* url = [[NSURL alloc] initWithString:@"http://google.com/"];
    NSData* data = [NSData dataWithContentsOfURL:url];
    if (data != nil)
        return YES;
    return NO;
}

もっと簡単なものがあるかどうか知っていますか???

みんな、すべての答えに感謝しますが、私は最高のものではなく、最もシンプルで軽量なソリューションを探しています(つまり、3G / Wi-Fiの区別は必要ありません。YES / NOリーチのみを検索していますウェブサイト)

4

6 に答える 6

4

Apple が提供するReachability Exampleを見てください。

あなたのアプローチが持つ可能性のある問題は、タイムアウトが発生する可能性があるため、一部のデータの同期ダウンロードがアプリをブロックする可能性があることです。その結果、Apple がアプリを拒否する場合があります。

到達可能性の例は、次のように使用できます。

Reachability *_reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus remoteHostStatus = [_reachability currentReachabilityStatus];
if (remoteHostStatus == NotReachable) {
    // not reachable
} else if (remoteHostStatus == ReachableViaWiFi) {
    // reachable via Wifi
} else if (remoteHostStatus == ReachableViaWWAN) {
    // reachable via WWAN
}
于 2013-01-24T10:27:06.680 に答える
2

このアプローチは使用しないことをお勧めします。このコードが原因で、アプリの1つが拒​​否されました。代わりに、Appleの到達可能性クラスを使用してください。

于 2013-01-24T10:29:47.710 に答える
2

このコードを使用して、デバイスがインターネットに接続されているかどうかを確認します

viewDidLoad で次のコードを使用します。

 Reachability* internetReachable; = [Reachability reachabilityForInternetConnection];
    [internetReachable startNotifier];

    hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"] ;
    [hostReachable startNotifier];

この関数をコードに追加します。

-(void) checkNetworkStatus:(NSNotification *)notice
{
    recheabilityBool=FALSE;
    nonrecheabilityBool=FALSE;
    // called after network status changes
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            nonrecheabilityBool=TRUE;
            internetCon=0;
            //NSLog(@"The internet is down.");


            break;
        }
        case ReachableViaWiFi:
        {
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            internetCon=404;
            [prefs setInteger:internetCon forKey:@"conKey"];

            //NSLog(@"The internet is working via WIFI.");
            break;

        }
        case ReachableViaWWAN:
        {
            //NSLog(@"The internet is working via WWAN.");

            break;
        }
    }

    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            internetCon=0;
            if( nonrecheabilityBool==FALSE)
            {
                //NSLog(@"A gateway to the host server is down.");
            }
            break;

        }
        case ReachableViaWiFi:
        {
            if(recheabilityBool==FALSE)
            {

                recheabilityBool=TRUE;

                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
                internetCon=404;
                [prefs setInteger:internetCon forKey:@"conKey"];


                //NSLog(@"The internet is working via WIFI.");
                break;
            }


            //NSLog(@"A gateway to the host server is working via WIFI.");

            break;
        }
        case ReachableViaWWAN:
        {
            //NSLog(@"A gateway to the host server is working via WWAN.");
            break;
        }
    }
}


- (BOOL)connected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
于 2013-01-24T10:34:38.790 に答える
1
Reachability* reachability = [Reachability sharedReachability];
[reachability setHostName:@"www.example.com"];    // set your host name here
NetworkStatus remoteHostStatus = [reachability remoteHostStatus];

iOS または OSX でアクティブなインターネット接続を確認する方法は?

于 2013-01-24T10:34:02.370 に答える
0

@who9vyが言ったように、到達可能性の例を使用してください

Reachability.h と Reachability.m の 2 つのクラスをプロジェクトにインポートします。

メソッドを使用してインターネット接続を確認する

- (BOOL)isConnectedToInternet
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
于 2013-01-24T10:34:20.653 に答える
0

到達可能性を確認する最良の方法は、Apple Rechability クラスです

このリンクを確認してください

それがあなたを助けることを願っています..

于 2013-01-24T10:34:24.423 に答える