web-dev-qa-db-ja.com

SystemConfiguration.CaptiveNetworkはiOS 12では動作しません

ユーザーから現在のSSIDを検出する機能があります。残念ながら、これはiOS 12ではもう機能しません。つまり、if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {部分を飛び越えるだけです。たぶん、それは単なるバグであるか、非推奨です。 Apple Docs。古いiOS 11、10、および9デバイスでは、うまく機能します。

これが私のコードです:

func getWiFiSsid() -> 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


            }
        }
    }
    return ssid
}
16
Victor Lobe

IOS 12以降でこの機能を使用するには、XcodeでアプリのWiFi情報へのアクセス機能を有効にします。この機能を有効にすると、XcodeはAccess WiFi情報の資格を資格ファイルとApp IDに自動的に追加します。

https://developer.Apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo?language=objc

enter image description here

34
Ckwanted