Recherche…


Remarques

Le code source de Reachability.h et Reachability.m est disponible sur le site de documentation des développeurs d'Apple.

Mises en garde

Contrairement à d'autres plates-formes, Apple doit encore fournir un ensemble standard d'API pour déterminer l'état du réseau d'un périphérique iOS et proposer uniquement ces exemples de code liés ci-dessus. Le fichier source change au fil du temps, mais une fois importé dans un projet d'application, il est rarement mis à jour par les développeurs.

Pour cette raison, la plupart des développeurs d'applications ont tendance à utiliser l'une des nombreuses bibliothèques github / Cocoapod pour leur accessibilité.

Apple recommande également, pour les demandes faites à vous sur ordre de l'utilisateur, toujours tenter une connexion d' abord, avant d' utiliser joignabilité / SCNetworkReachability pour diagnostiquer l'échec ou d'attendre la connexion pour revenir .

Création d'un écouteur d'accessibilité

La classe d' accessibilité d'Apple vérifie périodiquement l'état du réseau et avertit les observateurs des modifications.

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

Ajouter un observateur aux modifications du réseau

Reachability NSNotification utilise les messages NSNotification pour alerter les observateurs lorsque l'état du réseau a changé. Votre classe devra devenir un observateur.

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

Ailleurs dans votre classe, implémentez la signature de la méthode

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

Alerte lorsque le réseau devient indisponible

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

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

Alerte lorsque la connexion devient un réseau WIFI ou cellulaire

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

Vérifier si est connecté au réseau

Rapide

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
}

Objectif c:

nous pouvons vérifier la connectivité du réseau en quelques lignes de code comme suit:

-(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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow