デバイスのネットワークが変更されたかどうかを知るにはどうすればよいですか? たとえば、次のユース ケースを使用します。
- ユーザーは Wi-Fi A に接続します。
- ユーザーがアプリを起動します。
- ユーザーは Wi-Fi B. (または 3G) に接続します。
- ユーザーがアプリを復元します。
デバイスが Wi-Fi A から Wi-Fi B に変わったことをアプリに通知する方法はありますか?
デバイスのネットワークが変更されたかどうかを知るにはどうすればよいですか? たとえば、次のユース ケースを使用します。
デバイスが Wi-Fi A から Wi-Fi B に変わったことをアプリに通知する方法はありますか?
Apple は親切にも完全なサンプルを作成してくれました。これは、到達可能性 ( Apple リンク) と呼ばれます。その要点は次のとおりです。
.h ファイル内:
// declare Reachability, you no longer have a singleton but manage instances
Reachability* reachability;
.m ファイル内:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
.....
- (void) handleNetworkChange:(NSNotification *)notice
{
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
}
これは、ARC互換の代替案の素晴らしいドロップです https://github.com/tonymillion/Reachability
プロジェクトで到達可能性を使用するネットワークタイプを取得する
SCNetworkReachabilityインターフェースはそれを支援します。基本的に、いわゆる到達可能性参照を作成し、それに対してSCNetworkReachabilityGetFlagsを呼び出して、接続に関する情報を取得します。
他の人が述べたように、到達可能性を使用するリンクはこちら