iOS 10 이상 업데이트
CNCopySupportedInterfaces는 iOS 10에서 더 이상 사용되지 않습니다. ( API Reference )
당신은 가져와야 에서 SystemConfiguration / CaptiveNetwork.h을 추가합니다 SystemConfiguration.framework을 (빌드 단계에서) 대상의 링크 라이브러리에.
다음은 신속한 코드 조각입니다 (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
}
}
( 중요 : CNCopySupportedInterfaces는 시뮬레이터에서 nil을 리턴합니다.)
Objective-c의 경우 여기와 아래의 Esad의 답변을 참조하십시오
+ (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;
}
iOS 9 업데이트
iOS 9 현재 Captive Network는 더 이상 사용되지 않습니다 *. ( 소스 )
* iOS 10에서는 더 이상 사용되지 않습니다 (위 참조).
NEHotspotHelper ( source ) 를 사용하는 것이 좋습니다.
networkextension@apple.com으로 Apple에게 이메일을 보내고 자격을 요청해야합니다. ( 소스 )
샘플 코드 ( 내 코드 아님. 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;
}
참고 사항 : 예, iOS 9에서는 CNCopySupportedInterfaces를 더 이상 사용하지 않고 iOS 10에서는 위치를 반대로했습니다. Apple 네트워킹 엔지니어와 대화를 나 and을 때 많은 사람들이 레이더를 제출하고 Apple Developer 포럼에서 문제에 대해 이야기했습니다.