iOS获取当前的wlannetworking名称
我正在寻找一种方法来获取iOS5的objective-c中当前连接的wlannetworking的信息(至less是名称)。
我需要这个,因为我们正在开发一个不适用于特定networking的应用程序。 在这个networking(在我们的大学),端口closures,我们需要连接到服务器。 但是还有另外一个networking可用,我们想告诉用户,如果他连接到上述networking,他必须切换networking。
我甚至不知道从哪里开始。 有没有人有一个想法或任何提示?
感谢致敬
从iOS> = 4.1,可以获取设备正在连接的无线networking的SSID。
为此,你可以使用函数CNCopyCurrentNetworkInfo
有关实施的详细信息可以在SO上获得 : iPhone无需私人图书馆即可获得SSID
可以从Captivenetworking获取当前的WiFi信息。 过去,苹果实际上已经禁用了一段时间,但由于强烈的要求,似乎重新启用了它。 他们也有可能决定在将来closures这一点。
我们可以得到的信息是BSSID
, SSID
, SSIDDATA
。 BSSID
是wifi的唯一地址, SSID
是当前的wifi名称, SSIDDATA
是SSID
的hex表示。
对于Swift 3.1:
func printCurrentWifiInfo() { if let interface = CNCopySupportedInterfaces() { for i in 0..<CFArrayGetCount(interface) { let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interface, i) let rec = unsafeBitCast(interfaceName, to: AnyObject.self) if let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString), let interfaceData = unsafeInterfaceData as? [String : AnyObject] { // connected wifi print("BSSID: \(interfaceData["BSSID"]), SSID: \(interfaceData["SSID"]), SSIDDATA: \(interfaceData["SSIDDATA"])") } else { // not connected wifi } } } }
对于Objective-C
NSArray *interFaceNames = (__bridge_transfer id)CNCopySupportedInterfaces(); for (NSString *name in interFaceNames) { NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)name); NSLog[@"wifi info: bssid: %@, ssid:%@, ssidData: %@", info[@"BSSID"], info[@"SSID"], info[@"SSIDDATA"]]; }