неизвестный статус после вызова localizedNetworkReachabilityStatusString - PullRequest
0 голосов
/ 28 сентября 2018

Мне нужно отправить состояние сети на некоторый аналитический сервер, поэтому мне нужно отправить его после запуска приложения.Я пытался использовать Alamofire, но обычно получаю статус Неизвестно, если есть какая-то задержка, он показывает правильный статус: Этот код будет работать в моем AppDelegate (didFinishLaunchingWithOptions):

AFNetworkReachabilityManager.shared().startMonitoring()
AFNetworkReachabilityManager.shared().localizedNetworkReachabilityStatusString()

Что лучшеспособ получить правильный статус сразу?

ОБНОВЛЕНИЕ 1:

Я обновил свой код и попытался использовать обработчик завершения, но почему, когда я использую этот метод, он напечатает несколько ДА?

connectedCompletionBlock({ connected in

        if connected {
            print("YES")
        } else {
            print("NO")
        }

    })


class func connectedCompletionBlock(_ completion: @escaping (_ connected: Bool) -> Void) {

    AFNetworkReachabilityManager.shared().startMonitoring()

    AFNetworkReachabilityManager.shared().setReachabilityStatusChange({ status in

        var isConnected = false
        let wifi = AFNetworkReachabilityStatus.reachableViaWiFi
        let wwan =  AFNetworkReachabilityStatus.reachableViaWWAN

        if ( status == wifi || status == wwan)  {
            con = true
        }

        AFNetworkReachabilityManager.shared().stopMonitoring()
        completion(isConnected)


    })
}

1 Ответ

0 голосов
/ 02 октября 2018

Хорошо, так как никто не ответил, я думаю, что это хорошо, чтобы поделиться решением с вами.Проблема заключалась в следующем: я вызывал этот метод для didFinishLaunchingWithOptions, и поскольку Alamofire требуется некоторое время, чтобы выяснить состояние соединения, он возвращает неизвестное!Я назвал его на applicationDidBecomeActive, и теперь он работает нормально.

...