iOS
Vérification de la connectivité réseau
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;
}
}