Zoeken…


Opmerkingen

De broncode voor Reachability.h en Reachability.m is te vinden op de documentatie- site voor ontwikkelaars van Apple.

Voorbehoud

In tegenstelling tot andere platforms moet Apple nog een standaardset API's leveren om de netwerkstatus van een iOS-apparaat te bepalen en alleen deze hierboven genoemde codevoorbeelden aan te bieden. Het bronbestand verandert in de loop van de tijd, maar eenmaal geïmporteerd in een app-project worden ze zelden bijgewerkt door de ontwikkelaars.

Om deze reden hebben de meeste app-ontwikkelaars de neiging om een van de vele door Github / Cocoapod onderhouden bibliotheken te gebruiken voor bereikbaarheid.

Apple beveelt ook aan, op verzoek van de gebruiker, dat u altijd eerst een verbinding probeert voordat u Bereikbaarheid / SCNetwork Bereikbaarheid gebruikt om de storing te diagnosticeren of te wachten tot de verbinding terugkeert .

Een luisteraar voor bereikbaarheid maken

De bereikbaarheidsklasse van Apple controleert periodiek de netwerkstatus en waarschuwt waarnemers voor wijzigingen.

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

Waarnemer toevoegen aan netwerkwijzigingen

Reachability maakt gebruik van NSNotification berichten om waarnemers te waarschuwen wanneer de netwerkstatus is gewijzigd. Je klas moet een waarnemer worden.

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

Elders in uw klas, methode-handtekening implementeren

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

Waarschuwing wanneer netwerk niet meer beschikbaar is

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

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

Waarschuwing wanneer verbinding een WIFI of mobiel netwerk wordt

- (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;
    }
}

Controleer of is verbonden met het netwerk

Snel

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
}

Doelstelling C:

we kunnen de netwerkconnectiviteit binnen enkele regels code controleren als:

-(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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow