CẬP NHẬT CHO iOS 10 trở lên
CNCopySupportedInterfaces không còn bị phản đối trong iOS 10. ( Tham khảo API )
Bạn cần nhập SystemConfiguration / CaptiveNetwork.h và thêm SystemConfiguration.framework vào Thư viện được liên kết của mục tiêu của bạn (trong các giai đoạn xây dựng).
Đây là đoạn mã trong swift (Câu trả lời của RikiRiocma) :
import Foundation
import SystemConfiguration.CaptiveNetwork
public class SSID {
class func fetchSSIDInfo() -> String {
var currentSSID = ""
if let interfaces = CNCopySupportedInterfaces() {
for i in 0..<CFArrayGetCount(interfaces) {
let interfaceName: UnsafePointer<Void> = CFArrayGetValueAtIndex(interfaces, i)
let rec = unsafeBitCast(interfaceName, AnyObject.self)
let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)")
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData! as Dictionary!
currentSSID = interfaceData["SSID"] as! String
}
}
}
return currentSSID
}
}
( Quan trọng: CNCopySupportedInterfaces trả về nil trên trình giả lập.)
Đối với Mục tiêu-c, xem câu trả lời của Esad tại đây và bên dưới
+ (NSString *)GetCurrentWifiHotSpotName {
NSString *wifiName = nil;
NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
for (NSString *ifnam in ifs) {
NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
if (info[@"SSID"]) {
wifiName = info[@"SSID"];
}
}
return wifiName;
}
CẬP NHẬT CHO iOS 9
Kể từ iOS 9 Captive Network không được dùng nữa *. ( nguồn )
* Không còn bị phản đối trong iOS 10, xem ở trên.
Bạn nên sử dụng NEHotspotHelper ( nguồn )
Bạn sẽ cần gửi email cho apple tại networkextension@apple.com và yêu cầu quyền lợi. ( nguồn )
Mã mẫu ( Không phải mã của tôi. Xem câu trả lời của Pablo A ):
for(NEHotspotNetwork *hotspotNetwork in [NEHotspotHelper supportedNetworkInterfaces]) {
NSString *ssid = hotspotNetwork.SSID;
NSString *bssid = hotspotNetwork.BSSID;
BOOL secure = hotspotNetwork.secure;
BOOL autoJoined = hotspotNetwork.autoJoined;
double signalStrength = hotspotNetwork.signalStrength;
}
Lưu ý bên lề: Yup, họ đã từ chối CNCopySupportedInterfaces trong iOS 9 và đảo ngược vị trí của họ trong iOS 10. Tôi đã nói chuyện với một kỹ sư mạng của Apple và sự đảo ngược xuất hiện sau khi rất nhiều người nộp Radars và nói về vấn đề này trên diễn đàn Apple Developer.