NEHotspotConfigurationManager получает это предупреждение: «Невозможно подключиться к сети«пока ошибка равна нулю - PullRequest
0 голосов
/ 09 декабря 2018

Итак, я пытаюсь отслеживать состояние соединения с помощью доводчиков:

 func reconnect(success: @escaping () -> Void, failure: @escaping () -> Void) {
    let manager = NEHotspotConfigurationManager.shared
    let ssid = CameraManager.camera.uuid
    let password = "password"
    let isWEP = false
    let hotspotConfiguration = NEHotspotConfiguration(ssid: ssid, passphrase: password, isWEP: isWEP)
    hotspotConfiguration.joinOnce = true
    manager.apply(hotspotConfiguration) { (error) in
        if (error != nil) {

          if let error = error {
                switch error._code {
                case 8:
                    print("internal error")
                    failure()
                case 7:
                    NotificationCenter.default.post(name: Notification.Name(rawValue: "cancelFromHotSpot"), object: nil)
                    failure()
                    self.stopSession()
                case 13:
                    success()
                    DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
                        self.startSession()
                    }
                default:
                    break
                }
        }

        if error == nil {
            print("success connecting wifi")
            success()
            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
                self.startSession()
            }
        }
    }
}

И все же есть сценарий, когда я получаю это предупреждение "Невозможно подключиться к сети", пока ошибка равна нулю, есть идеи?

1 Ответ

0 голосов
/ 29 января 2019

Я думаю, что это ошибка iOS, и мы не можем ее избежать.

Эта проблема также обсуждалась на форуме разработчиков Apple, и ответ сотрудников Apple был ниже

"У меня ничего нетздесь, помимо того, что я сказал 13 февраля. Тот факт, что ошибки из подсистемы Wi-Fi не сообщаются через обработчик завершения, является ожидаемым поведением. Если вам не нравится это поведение - и, чтобы быть ясным, ялично с вами согласен - лучший способ продвинуться - подать отчет об ошибке с просьбой изменить его. Пожалуйста, оставьте свой номер ошибки, просто для записи. "

Это обсуждалось здесь

Так что, к сожалению, у меня нет прекрасных идей.Все идеи, которые у меня есть, приведены ниже (они не решают эту проблему идеально).

  1. Ожидание исправления ошибки в следующем выпуске.
  2. Отдельный код "Применение конфигурации" и связькод как показано ниже.
@IBAction func setConfigurationButtonTapped(_ sender : Any) {
    manager.apply(hotspotConfiguration) { (error) in
    if(error != nil){
        // Do error handling
    }else{
        // Wait a few seconds for the case of showing "Unable to join the..." dialog.
        // Check reachability to the device because "error == nil" does not means success.
    }
}
@IBAction func sendButtonTapped(_ sender : Any) {
    self.startSession()
}
...