使用CNCopyCurrentNetworkInfo的问题

Coo*_*ude 2 objective-c ios4 ios ios5 ios6

我使用以下代码来检索iPod连接的WiFi网络的SSID.

NSArray *ifs = (id)CNCopySupportedInterfaces();
NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
id info = nil;
for (NSString *ifnam in ifs) {
    info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
    NSLog(@"%s: %@ => %@", __func__, ifnam, info);
    if (info && [info count]) {
        break;
    }
    [info release];
}
Run Code Online (Sandbox Code Playgroud)

有时这段代码没有返回我的设备连接的网络的正确SSID.有关为什么没有正确检索SSID的指针?CNCopyCurrentNetworkInfo包是否依赖于iOS版本的设备?

谢谢.

vua*_*thu 6

  1. 将SystemConfiguration.framework添加到项目中.

  2. import < SystemConfiguration/CaptiveNetwork.h >

  3. CFArrayRef myArray = CNCopySupportedInterfaces();
    CFStringRef interfaceName = CFArrayGetValueAtIndex(myArray, 0);
    CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(interfaceName);
    NSDictionary *dict = ( NSDictionary*) captiveNtwrkDict;
    NSString* ssid = [dict objectForKey:@"SSID"];
    NSLog(@"%s ssid : %@",__FUNCTION__, [ssid description]);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 对于iOS 12及更高版本,您必须从功能启用它.

重要信息要在iOS 12及更高版本中使用此功能,请在Xcode中为您的应用启用Access WiFi信息功能.启用此功能后,Xcode会自动将Access WiFi信息权利添加到您的权利文件和应用程序ID中.文档链接