11

ユーザーが iOS アプリで特定の WiFi ネットワークに接続したときに発生するイベントをキャプチャする方法はありますか。これは、スーパー ユーザー権限を必要としないプライベート ライブラリを使用して実現できても問題ありません (ジェイル ブレイク)。接続されたSSIDの変更イベントをキャプチャしたいだけです。

4

3 に答える 3

6

Larmeが投稿したものを使用し、NSTimerを設定して1秒ごとに現在のネットワークのSSIDを確認することをお勧めします。変更を検出した場合は、必要なことを何でも実行してください. WiFi ネットワークの変更は瞬時に行われるものではないため、1 秒の解像度を持つことは悪くありません。

applicationDidFinishLoading

NSTimer *ssidTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(fetchSSIDInfo) userInfo:nil repeats:YES];

AppDelegate で

- (id)fetchSSIDInfo {
     NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
     NSLog(@"Supported interfaces: %@", ifs);
     id info = nil;
     NSString *ifnam = @"";
     for (ifnam in ifs) {
         info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
         NSLog(@"%@ => %@", ifnam, info);
         if (info && [info count]) { break; }
     }
     if ([info count] >= 1 && [ifnam caseInsensitiveCompare:prevSSID] !=  NSOrderedSame) {
          // Trigger some event
          prevSSID = ifnam;
     }

     return info;
}

そんな感じ。私はMacの前にいないので、コードにタイプミスがないかどうかを確認できませんが、それほど違いはないはずです

于 2013-07-16T12:06:15.323 に答える