Важливо : Ця перевірка завжди повинна виконуватися асинхронно. Більшість відповідей нижче синхронізовані, тому будьте обережні, інакше ви заморозите додаток.
Швидкий
1) Встановити через CocoaPods або Carthage: https://github.com/ashleymills/Reachability.swift
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")
}
Ціль-С
1) Додайте SystemConfiguration
рамки до проекту, але не турбуйтеся про те, щоб включити його будь-де
2) Додайте версію Reachability.h
та Reachability.m
проект до Tony Million (знайдено тут: 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
файлів на щось інше, щоб вирішити проблему.
Примітка . Домен, який ви використовуєте, не має значення. Це просто тестування на шлюз до будь-якого домену.
return (BOOL)URLString;
, або ще краще,return !!URLString
абоreturn URLString != nil