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 SystemConfigurationdem 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.hund Reachability.mzum 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 ReachabilityKlasse 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.hund Reachability.mDateien 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 !!URLStringoderreturn URLString != nil