Ważne : to sprawdzenie należy zawsze wykonywać asynchronicznie. Większość poniższych odpowiedzi jest zsynchronizowana, więc bądź ostrożny, w przeciwnym razie zawiesisz aplikację.
Szybki
1) Zainstaluj za pośrednictwem CocoaPods lub Carthage: https://github.com/ashleymills/Reachability.swift
2) Test osiągalności poprzez zamknięcia
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")
}
Cel C
1) Dodaj SystemConfiguration
platformę do projektu, ale nie martw się o włączenie go w dowolnym miejscu
2) Dodaj wersję Tony Milliona Reachability.h
i Reachability.m
do projektu (znalezione tutaj: https://github.com/tonymillion/Reachability )
3) Zaktualizuj sekcję interfejsu
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Następnie zaimplementuj tę metodę w pliku m kontrolera widoku, który możesz wywołać
// 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];
}
Ważna uwaga:Reachability
klasa jest jednym z najczęściej używanych klas w projektach więc może napotkasz nazywania konfliktów z innymi projektami. Jeśli tak się stanie, będziesz musiał zmienić nazwę jednej pary plików Reachability.h
i Reachability.m
na inną, aby rozwiązać problem.
Uwaga: używana domena nie ma znaczenia. To tylko testowanie bramy do dowolnej domeny.
return (BOOL)URLString;
, a nawet lepiej,return !!URLString
lubreturn URLString != nil