Wichtig : Diese Prüfung sollte immer asynchron durchgeführt werden. Die meisten der folgenden Antworten sind synchron. Seien Sie also vorsichtig, sonst frieren Sie Ihre App ein.
Schnell
1) Installation über CocoaPods oder Karthago: https://github.com/ashleymills/Reachability.swift
2) Erreichbarkeit über Verschlüsse testen
let reachability = Reachability()!
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
Ziel c
1) Fügen Sie SystemConfiguration
dem Projekt ein Framework hinzu, aber machen Sie sich keine Sorgen, dass Sie es irgendwo einfügen
2) Fügen Sie die Version von Tony Million von Reachability.h
und Reachability.m
zum Projekt hinzu (hier zu finden: https://github.com/tonymillion/Reachability )
3) Aktualisieren Sie den Schnittstellenabschnitt
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Implementieren Sie diese Methode dann in die .m-Datei Ihres View Controllers, die Sie aufrufen können
// Checks if we have an internet connection or not
- (void)testInternetConnection
{
internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];
// Internet is reachable
internetReachableFoo.reachableBlock = ^(Reachability*reach)
{
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Yayyy, we have the interwebs!");
});
};
// Internet is not reachable
internetReachableFoo.unreachableBlock = ^(Reachability*reach)
{
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Someone broke the internet :(");
});
};
[internetReachableFoo startNotifier];
}
Wichtiger Hinweis: Die Reachability
Klasse ist eine der am häufigsten verwendeten Klassen in Projekten, sodass Sie möglicherweise auf Namenskonflikte mit anderen Projekten stoßen. In diesem Fall müssen Sie eines der Paare Reachability.h
und Reachability.m
Dateien in etwas anderes umbenennen , um das Problem zu beheben.
Hinweis: Die von Ihnen verwendete Domain spielt keine Rolle. Es wird nur nach einem Gateway zu einer beliebigen Domain gesucht.
return (BOOL)URLString;
oder noch besser,return !!URLString
oderreturn URLString != nil