수색…


비고

Reachability.hReachability.m 대한 소스 코드는 Apple의 개발자 설명서 사이트 에서 찾을 수 있습니다.

주의 사항

다른 플랫폼과 달리, Apple은 아직 iOS 기기의 네트워크 상태를 파악하고 위에 링크 된 코드 예제 만 제공하는 표준 API 세트를 제공하지 않습니다. 소스 파일은 시간이 지남에 따라 변경되지만 일단 앱 프로젝트로 가져 오면 개발자가 거의 업데이트하지 않습니다.

이러한 이유로 대부분의 앱 개발자는 접근성을 위해 많은 Github / Cocoapod 유지 관리 라이브러리 중 하나를 사용하는 경향이 있습니다.

Apple은 Reachability / SCNetworkReachability를 사용하여 오류를 진단하거나 연결이 반환되기를 기다리기 전에 항상 사용자가 요청한 연결에 대해 먼저 연결을 시도 할 것을 권장합니다.

도달 가능성 리스너 만들기

Apple의 Reachability 클래스는 주기적으로 네트워크 상태를 확인하고 관찰자에게 변경 사항을 알립니다.

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

네트워크 변경에 관찰자 추가

ReachabilityNSNotification 메시지를 사용하여 네트워크 상태가 변경되었을 때 관찰자에게 경고합니다. 당신의 수업은 관찰자가되어야합니다.

[[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