サーチ…


備考

Reachability.hReachability.mのソースコードは、Appleの開発者向けドキュメントサイトにあります。

警告

他のプラットフォームとは異なり、AppleはiOSデバイスのネットワークステータスを判断し、上にリンクされたこれらのコード例のみを提供するための標準APIセットをまだ提供していない。ソースファイルは時間とともに変化しますが、一旦アプリケーションプロジェクトにインポートされると、開発者によって更新されることはめったにありません。

このため、ほとんどのアプリ開発者は、到達可能性のために多くのGithub / Cocoapod管理ライブラリの1つを使用する傾向があります。

また、 Reachability / SCNetworkReachabilityを使用して障害を診断したり、接続が復帰するのを待ったりする前に、ユーザーは常に最初に接続を試みることを推奨します。

到達可能性リスナーの作成

AppleのReachabilityクラスは定期的にネットワークの状態をチェックし、オブザーバーに変更を警告します。

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

ネットワーク変更にオブザーバーを追加する

Reachabilityは、 NSNotificationメッセージを使用して、ネットワーク状態が変化したときにオブザーバに警告します。あなたのクラスはオブザーバーになる必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

あなたのクラスのどこかで、メソッドのシグネチャを実装する

- (void) reachabilityChanged:(NSNotification *)note {
    //code which reacts to network changes
}

ネットワークが利用できなくなったときの警告

- (void)reachabilityChanged:(NSNotification *)note {
    Reachability* reachability = [note object];
    NetworkStatus netStatus = [reachability currentReachabilityStatus];

    if (netStatus == NotReachable) {
        NSLog(@"Network unavailable");
    }
}

接続がWIFIまたはセルラーネットワークになると警告する

- (void)reachabilityChanged:(NSNotification *)note {
    Reachability* reachability = [note object];
    NetworkStatus netStatus = [reachability currentReachabilityStatus];

    switch (netStatus) {
        case NotReachable:
            NSLog(@"Network unavailable");
            break;
        case ReachableViaWWAN:
            NSLog(@"Network is cellular");
            break;
        case ReachableViaWiFi:
            NSLog(@"Network is WIFI");
            break;
    }
}

ネットワークに接続されているかどうかを確認する

迅速

import SystemConfiguration

/// Class helps to code reuse in handling internet network connections.
class NetworkHelper {

    /**
     Verify if the device is connected to internet network.
     - returns:          true if is connected to any internet network, false if is not
     connected to any internet network.
     */
   class func isConnectedToNetwork() -> Bool {
       var zeroAddress = sockaddr_in()
    
       zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
       zeroAddress.sin_family = sa_family_t(AF_INET)
    
       let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
           SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
       }
    
       var flags = SCNetworkReachabilityFlags()
    
       if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
           return false
       }
    
       let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
       let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
    
      return (isReachable && !needsConnection)
   }
}



if NetworkHelper.isConnectedToNetwork() {
    // Is connected to network
}

目標-C:

数行のコード内でネットワーク接続を次のように確認できます。

-(BOOL)isConntectedToNetwork
{
    Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
    if (networkStatus == NotReachable)
    {
        NSLog(@"There IS NO internet connection");
        return false;
    } else
    {
        NSLog(@"There IS internet connection");
        return true;
    }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow