2

デバイスのネットワークが変更されたかどうかを知るにはどうすればよいですか? たとえば、次のユース ケースを使用します。

  1. ユーザーは Wi-Fi A に接続します。
  2. ユーザーがアプリを起動します。
  3. ユーザーは Wi-Fi B. (または 3G) に接続します。
  4. ユーザーがアプリを復元します。

デバイスが Wi-Fi A から Wi-Fi B に変わったことをアプリに通知する方法はありますか?

4

4 に答える 4

3

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"); 
    } 
} 
于 2013-03-13T07:28:31.467 に答える
1

これは、ARC互換の代替案の素晴らしいドロップです https://github.com/tonymillion/Reachability

于 2013-03-13T08:21:20.183 に答える
0

プロジェクトで到達可能性を使用するネットワークタイプを取得する

SCNetworkReachabilityインターフェースはそれを支援します。基本的に、いわゆる到達可能性参照を作成し、それに対してSCNetworkReachabilityGetFlagsを呼び出して、接続に関する情報を取得します。

于 2013-03-13T07:50:39.240 に答える
0

他の人が述べたように、到達可能性を使用するリンクはこちら

于 2013-03-13T08:52:36.953 に答える