Важно! : Эта проверка должна всегда всегда выполняться асинхронно. Большинство ответов ниже являются синхронными, поэтому будьте осторожны, иначе вы заморозите свое приложение.
Swift
1) Установка через CocoaPods или Carthage: https: // github. ком / ashleymills / достижимости. Свифт
2) Проверка достижимости через замыкания
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")
}
Objective-C
1) Добавьте фреймворк SystemConfiguration
в проект, но не беспокойтесь о его включении
2) Добавить версию Tony Million Reachability.h
и Reachability.m
к проекту (найдено здесь: https: // github. com / tonymillion / Reachability )
3) Обновление раздела интерфейса
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Затем реализуйте этот метод в. m файл вашего контроллера представления, который вы можете вызвать
// 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];
}
Важное примечание: Класс Reachability
является одним из наиболее часто используемых классов в проектах, поэтому вы можете столкнуться с конфликтами имен с другими проектами. Если это произойдет, вам придется переименовать одну из пар файлов Reachability.h
и Reachability.m
в другое, чтобы решить эту проблему.
Примечание: Домен, который вы используете, не имеет значения. Это просто тестирование шлюза в любой домен.