2016-11-20 5 views
1

ハードウェアの変更を検出することは可能ですか?ネットワークアダプタが変更されたとき(つまり、ユーザーがMacBookをドッキング解除したとき)に送信される更新通知を探しています。ハードウェア/ネットワークアダプタの変更を検出する

私はすでにGoogleで検索しましたが、何も見つかりませんでした。その後、

答えて

2

私はAFNetworkingを使用し、それが(アダプターの変更のためのリスニング)、このために使用するのが最も簡単であることがわかってきた

#import <AFNetworking/AFNetworkReachabilityManager.h> 

- (instancetype)init 
{ 
    self = [super init]; 
    if(self) 
    { 
     [[AFNetworkReachabilityManager sharedManager] startMonitoring]; 
     [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(reachabilityChanged:) 
               name:AFNetworkingReachabilityDidChangeNotification 
               object:nil]; 
    } 
    return self; 
} 


-(void) dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                name:AFNetworkingReachabilityDidChangeNotification 
               object:nil]; 
} 

とハンドラを実装します。ここでは

- (void)reachabilityChanged:(NSNotification *)notification 
{ 
    NSNumber *s = notification.userInfo[AFNetworkingReachabilityNotificationStatusItem]; 
    AFNetworkReachabilityStatus status = [s integerValue]; 

    //Check value of status here 
} 

はヘッダーですステータスに使用される定数が表示されます。 https://github.com/AFNetworking/AFNetworking/blob/4fb051898c60051d207ca0c24435766fdf140e34/AFNetworking/AFNetworkReachabilityManager.h

私はSCReachabilityも使用しています

#import <SystemConfiguration/SystemConfiguration.h> 

    BOOL networkAvailable = NO; 
    const char *hostName = [NEVER_TRANSLATE(@"google.com") cStringUsingEncoding:NSASCIIStringEncoding]; 
    SCNetworkReachabilityFlags flags = 0; 
    SCNetworkReachabilityRef target = SCNetworkReachabilityCreateWithName(NULL, hostName); 

    if (SCNetworkReachabilityGetFlags(target, &flags)) 
    { 
     if (flags == kSCNetworkFlagsReachable) 
     { 
     networkAvailable = YES; 
     } 
    } 

私が代わりにリスナーとして登録する、特定の時間にネットワークの可用性を検出するために、これを使用しますが、そうではないことを確認これは、あなたが感謝し、私が探していたまさにつまり

+0

をやりたいかどう君は! –

関連する問題