iOS
Auf Netzwerkverbindung prüfen
Suche…
Bemerkungen
Der Quellcode für Reachability.h
und Reachability.m
kann auf dem Apple-Entwickler - Dokumentation zu finden Website .
Vorsichtsmaßnahmen
Im Gegensatz zu anderen Plattformen muss Apple noch einen Standardsatz von APIs bereitstellen, um den Netzwerkstatus eines iOS-Geräts zu ermitteln und nur die oben genannten Codebeispiele anzubieten. Die Quelldatei ändert sich mit der Zeit, wird jedoch nach dem Import in ein App-Projekt von den Entwicklern selten aktualisiert.
Aus diesem Grund neigen die meisten App-Entwickler dazu, eine der vielen von Github / Cocoapod verwalteten Bibliotheken zu verwenden, um erreichbar zu sein.
Apple empfiehlt auch, für im Auftrag des Benutzers gemacht Anfragen, dass Sie immer eine Verbindung versuchen, bevor Erreichbarkeits / SCNetworkReachability mit dem Versagen zu diagnostizieren oder zu warten , bis die Verbindung zurückzukehren .
Erreichbarkeitslistener erstellen
Die Reachability- Klasse von Apple überprüft regelmäßig den Netzwerkstatus und warnt die Beobachter über Änderungen.
Reachability *internetReachability = [Reachability reachabilityForInternetConnection];
[internetReachability startNotifier];
Beobachter zu Netzwerkänderungen hinzufügen
Reachability
verwendet NSNotification
Nachrichten, um Beobachter darauf aufmerksam zu machen, wenn sich der Netzwerkstatus geändert hat. Ihre Klasse muss Beobachter werden.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
Implementieren Sie an anderer Stelle in Ihrer Klasse die Methodensignatur
- (void) reachabilityChanged:(NSNotification *)note {
//code which reacts to network changes
}
Warnung, wenn das Netzwerk nicht verfügbar ist
- (void)reachabilityChanged:(NSNotification *)note {
Reachability* reachability = [note object];
NetworkStatus netStatus = [reachability currentReachabilityStatus];
if (netStatus == NotReachable) {
NSLog(@"Network unavailable");
}
}
Warnung, wenn die Verbindung zu einem WIFI- oder Mobilfunknetz wird
- (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;
}
}
Überprüfen Sie, ob eine Verbindung zum Netzwerk besteht
Schnell
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
}
Ziel c:
Wir können die Netzwerkkonnektivität innerhalb weniger Codezeilen prüfen:
-(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;
}
}