iOS連接指定WiFi

需求:用戶給定WiFi名和相關(guān)配置,在APP中連接指定WiFi。

具體實現(xiàn):通常來說,WiFi分為普通WiFi和企業(yè)WiFi,連接這兩種WiFi時,需要提供的配置參數(shù)是不一樣的。

  1. 新建項目,完成后新增capacity。


    capacity.png
  2. 引入頭文件
import NetworkExtension

主要使用到類NEHotspotConfigurationManager,NEHotspotConfiguration,NEHotspotEAPSettings.
其中NEHotspotEAPSettings是和WiFi相關(guān)配置相關(guān)的類。

//ssid 就是WiFi的名字,也就是我們在設(shè)置的WiFi列表中看到的那些名字
let ssid = "mywifi"
let manager = NEHotspotConfigurationManager.shared
manager.removeConfiguration(forSSID: ssid)
var configure:NEHotspotConfiguration?
let enterpriseSetting = NEHotspotEAPSettings.init()

//這里先以企業(yè)WiFi為例子
enterpriseSetting.username = enterpriseName
enterpriseSetting.password = enterprisePassphrase
//這里的trustedServernames可以詢問管理員,也可以在首次連接WiFi的時候,從profile文件中看到.
enterpriseSetting.trustedServerNames = [enterpriseDomain]
enterpriseSetting.supportedEAPTypes = [NSNumber(value: convertEnterpriseTypeToEAPTypes(type: enterpriseType))]
configure = NEHotspotConfiguration.init(ssid: ssid, eapSettings: enterpriseSetting)

//對于非企業(yè)WiFi,根據(jù)是否有密碼,選擇不同的api
if passphrase == "" {
     configure = NEHotspotConfiguration.init(ssid: ssid)
} else {
     configure = NEHotspotConfiguration.init(ssid: ssid, passphrase: passphrase, isWEP: false)
 }

//開始連接
manager.apply(configure!) { error in
}

//這里的轉(zhuǎn)換主要是對應(yīng)實際的枚舉值
func convertEnterpriseTypeToEAPTypes(type: String) -> Int {
        switch type {
        case "EAPTLS ":
            return 13
        case "EAPTTLS":
            return 21
        case "EAPPEAP":
            return 25
        case "EAPFAST":
            return 43
        default:
            return 25
        }
}

關(guān)于eaptype,可參考
https://developer.apple.com/documentation/networkextension/nehotspoteapsettings/eaptype

如何獲取trustedServerNames?
在iPhone的設(shè)置,網(wǎng)絡(luò)列表中,選擇要連接的WiFi,輸入username和password,確定后會彈出一個certificate需要trust,點擊more detail,新的頁面中,common name一欄即是需要的trustedServerNames

IMG_0034.jpg

IMG_0035.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容