重要:このチェックは常に非同期で実行する必要があります。以下の答えの大部分は同期しているため、そうしないとアプリがフリーズすることに注意してください。
迅速
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")
}
Objective-C
1)SystemConfiguration
フレームワークをプロジェクトに追加しますが、どこに含めてもかまいません。
2)のトニー・ミリオンのバージョンを追加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
あなたが他のプロジェクトとの競合に名前を付けるに遭遇するかもしれないので、クラスがプロジェクトに最も使用されるクラスの1つです。これが発生した場合は、Reachability.h
とReachability.m
ファイルのペアの1つを別の名前に変更して、問題を解決する必要があります。
注:使用するドメインは重要ではありません。これは、任意のドメインへのゲートウェイをテストするだけです。
return (BOOL)URLString;
、またはそれ以上、return !!URLString
またはreturn URLString != nil