ブログ一覧に戻る

Get the Current WiFi AP Information in Swift 4

西山 勇毅
iOS Swift WiFi NetworkExtension

Swift

現在繋がっているWiFiアクセスポイント情報をSwift4+iOSで取得する方法をメモ。Appleの公式開発者サイトにSwift3での綺麗な書き方が載っていたのでアレンジしてみました。

Step 1: Capabilities設定

Xcodeのcapabilitiesから、Access WiFi InformationをONにする。

WiFi Capabilities設定

Step 2: コード実装

以下のコードでWiFi情報を取得する。compactMap関数が便利。

import SystemConfiguration.CaptiveNetwork

struct NetworkInfo {
    var interface: String
    var success: Bool = false
    var ssid: String?
    var bssid: String?
}

func getNetworkInfos() -> [NetworkInfo] {
    guard let interfaceNames = CNCopySupportedInterfaces() as? [String] else {
        return []
    }
    let networkInfos: [NetworkInfo] = interfaceNames.compactMap { name in
        guard let info = CNCopyCurrentNetworkInfo(name as CFString) as? [String: AnyObject] else {
            return NetworkInfo(interface: name, success: false, ssid: nil, bssid: nil)
        }
        let ssid = info[kCNNetworkInfoKeySSID as String] as? String
        let bssid = info[kCNNetworkInfoKeyBSSID as String] as? String
        return NetworkInfo(interface: name, success: true, ssid: ssid, bssid: bssid)
    }
    return networkInfos
}

getNetworkInfos()メソッドを呼び出すと、NetworkInfo構造体が配列形式で返ってくる。

参考

この記事をシェア