2012-03-13 38 views
26

是否有可能在没有使用私人图书馆的情况下获得iPhone上所有可用SSID的列表iPhone没有私人图书馆获取所有SSID列表

我读iPhone get SSID without private library

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

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

,但似乎没有成为一个解决方案,使所有可用的网络列表中没有using a private library或连接到所有的人(是什么可笑...)

所以基本上我错过了什么或有没有解决方案?

+0

嘿,你是怎么做到的?你能分享示例代码吗? – Smita 2015-08-18 06:22:06

回答

27

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

+0

谢谢 - 我期待这个答案... – grubernd 2012-03-13 15:04:40

+6

@grubernd:我希望我可以给你一个不同的:) – 2012-03-13 15:27:26

+1

我们可以得到SSID,BSSID和SSID数据,而不使用私有API,但只使用SystemNetworkConfiguration.framework中的CaptiveNetwork类。 – 2013-12-30 11:41:40

1

步骤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" 
     } 
    } 
+0

可以U型的客观C版请 – 2017-03-06 22:52:25

+0

只得到连接SSID,我想获取所有远程SSID。你能帮我做同样的事吗? – 2017-06-13 09:24:49

1

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

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"; 
} 
+0

只得到连接SSID,我想获取所有远程SSID。 你能帮我做同样的事吗? – 2017-06-13 08:25:47

0
#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; 
     } 
    }