Я пытаюсь программно подключиться к сети Wi-Fi в моем приложении для iOS, используя NehotspotConfiguration. Вот проблема, с которой я сталкиваюсь: < /p>
Когда я пытаюсь подключиться с неверным паролем в первый раз, она показывает ошибку: «Не удалось подключиться: не связан с ожидаемым SSID». (Что ожидаемое поведение).
После этого я исправляю пароль и пытаюсь снова подключиться. Однако он по -прежнему показывает ту же ошибку («не удалось подключиться: не связан с ожидаемой SSID».) И не подключается к сети, даже если пароль правильный. < /P>
Вот код, который я использую: < /p>
func connectToWiFi(ssid: String, password: String, joinOnce: Bool, completion: @escaping (Bool, String) -> Void) {
// First, remove any existing configuration for the SSID to avoid caching issues
NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: ssid)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
let hotspotConfiguration = NEHotspotConfiguration(ssid: ssid, passphrase: password, isWEP: false)
hotspotConfiguration.joinOnce = joinOnce
NEHotspotConfigurationManager.shared.apply(hotspotConfiguration) { error in
if let error = error {
if (error as NSError).code == NEHotspotConfigurationError.alreadyAssociated.rawValue {
print("Already connected to the Wi-Fi: \(ssid)")
completion(true,"Already connected to the Wi-Fi: \(ssid)")
} else {
print("Failed to connect to Wi-Fi: \(ssid), Error: \(error.localizedDescription)")
completion(false, "Failed to connect to Wi-Fi: \(ssid), Error: \(error.localizedDescription)")
}
} else {
print(WiFiSSIDManager.shared.currentSSIDs())
if WiFiSSIDManager.shared.currentSSIDs().first == ssid {
// Real success
completion(true, "Successfully connected to Wi-Fi: \(ssid)")
} else {
// Failure
completion(false, "Failed to connect: Not associated with the expected SSID.")
}
}
}
}
}
func currentSSIDs() -> [String] {
var ssid: [String] = []
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
if let currentSSID = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String {
ssid.append(currentSSID)
}
}
}
}
return ssid
}
< /code>
Существует ли способ полностью сбросить состояние Wi-Fi для специфической SSID-программно в iOS, чтобы попытка подключения с правильным паролем работала после предыдущей неправильной попытки? Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... ial-incorr