当用户连接到iOS应用中的特定WiFi网络时,是否有任何方法可以捕获发生的事件。即使可以使用不需要超级用户特权(越狱)的任何私有库也可以做到这一点。我只想捕获连接的SSID的更改事件。
我建议您仅使用Larme发布的内容,并设置一个NSTimer来每秒检查一下当前网络的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电脑前,但是它应该没有太大区别
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句