我需要创建一个应用程序,在iPhone上获取所有可用wifi网络的名称和信息列表,当用户点击某些网络时,他们应该连接到它。我可以这样做吗?如何实现?
我需要创建一个应用程序,在iPhone上获取所有可用wifi网络的名称和信息列表,当用户点击某些网络时,他们应该连接到它。我可以这样做吗?如何实现?
无法获取所有可用的wifi网络名称和信息。 但是 只能获取您当前连接的网络的 SSID
(SSID
只是网络名称的技术术语)。
此类仅会显示您所连接的wifi网络名称 -
import UIKit
import SystemConfiguration.CaptiveNetwork
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad(){
super.viewDidLoad()
let ssid = self.getAllWiFiNameList()
print("SSID: \(ssid)")
}
func getAllWiFiNameList() -> String? {
var ssid: String?
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
break
}
}
}
return ssid
}
}
输出 - (我所连接的网络名称)
为了测试这个,你需要一个连接到你的电脑的物理设备(iPhone)。
您可以通过以下方法获取已连接的wifi SSID:
Swift (3 and 4) -
import SystemConfiguration.CaptiveNetwork
func fetchSSIDInfo() -> String? {
var ssid: String?
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
break
}
}
}
return ssid
}
Objective-C -
#import <SystemConfiguration/CaptiveNetwork.h>
+(NSString*)fetchSSIDInfo {
NSArray *ifs = (__bridge_transfer NSArray *)CNCopySupportedInterfaces();
NSDictionary *info;
for (NSString *ifnam in ifs) {
info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
if (info && [info count]) {
return [info objectForKey:@"SSID"];
break;
}
}
return @"No WiFi Available";
}