iPhone获得所有SSID列表没有私人图书馆

是否有可能获得所有可用的SSID 列表 ,而不使用私人图书馆?

我读了没有私人图书馆得到SSID

https://stackoverflow.com/a/6341893/346255

https://developer.apple.com/library/ios/#documentation/SystemConfiguration/Reference/CaptiveNetworkRef/Reference/reference.html

但似乎没有一个解决scheme来获得所有可用networking的列表,而无需使用私人图书馆或连接到所有可用的networking(什么是荒谬的…)

所以基本上我错过了一些东西,还是没有解决scheme?

如果没有使用私人图书馆( Apple80211 ),您只能获得您的设备当前连接到的networking的SSID。

第1步:添加框架SystemConfiguration.framework
第2步:导入以下头文件

 import SystemConfiguration import SystemConfiguration.CaptiveNetwork 

第3步:现在使用代码:

 func getUsedSSID()->String { let interfaces = CNCopySupportedInterfaces() if interfaces != nil { let interfacesArray = CFBridgingRetain(interfaces) as! NSArray if interfacesArray.count > 0 { let interfaceName = interfacesArray[0] as! String let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)! as Dictionary let SSIDName = unsafeInterfaceData["SSID"] as! String print(SSIDName)/* here print recentally used wifi name*/ return SSIDName }else{ return "0" } }else{ return "0" } } 

首先导入上面两个系统头文件

 import SystemConfiguration/SystemConfiguration.h import SystemConfiguration/CaptiveNetwork.h 

下面的函数/方法返回SSIDName

 -(NSString *)getNetworkId{ NSString *string = CFBridgingRelease(CNCopySupportedInterfaces()); NSArray *interfacesArray = CFBridgingRelease(CFBridgingRetain(string)); if(interfacesArray.count > 0){ NSString *networkName = [interfacesArray objectAtIndex:0]; CFStringRef yourFriendlyCFString = (__bridge CFStringRef)networkName; NSDictionary *unsafeInterfaceData = CFBridgingRelease(CNCopyCurrentNetworkInfo(yourFriendlyCFString)); NSString *ssidName = unsafeInterfaceData[@"SSID"]; return ssidName; } return @"No network Found"; } 

从iOS 9开始,您可以使用NEHotspotHelper获取SSID列表。 但是,您必须通过发送请求来获取Apple的com.apple.developer.networking.HotspotHelper权利。

查看https://developer.apple.com/documentation/networkextension/nehotspothelper了解更多信息。

 #import SystemConfiguration# ##import SystemConfiguration.CaptiveNetwork## //create variable var SSIDNameArray = NSMutableArray() var nameArray : NSArray = []; // Here function to return all SSIDName func getUsedSSID()->NSArray{ let interfaces = CNCopySupportedInterfaces() if interfaces != nil { let interfacesArray = CFBridgingRetain(interfaces) as! NSArray if interfacesArray.count > 0 { for interfaceName in interfacesArray { let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName as! CFString)! as NSDictionary let SSIDName = unsafeInterfaceData["SSID"] as! String self.SSIDNameArray .add(SSIDName) } nameArray = self.SSIDNameArray .copy() as! NSArray return nameArray; }else{ return nameArray; } }else{ return nameArray; } }