Ответ 1
Я бы рекомендовал просто использовать то, что опубликовал Larme, и настроить NSTimer для проверки каждую секунду или около того, что SSID вашей текущей сети, если вы обнаружите изменение, просто делайте все, что вам нужно. Имейте в виду, что изменение сетей Wi-Fi не является чем-то, что происходит мгновенно, поэтому с 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;
}
Что-то вроде этого. Я не могу проверить, свободен ли код, поскольку у меня нет макроса, но он не должен быть слишком разным