Постоянная проверка интернет-соединения с Alamofire - PullRequest
0 голосов
/ 15 марта 2019

Мое приложение основано на TableView, который загружает некоторые данные с сервера, используя Alamofire.Так как для использования моего приложения необходимо подключение к Интернету, я хочу постоянно проверять его.Я нахожу решение, создающее этот класс:

class Connectivity {
class func isConnectedToInternet() -> Bool {
    return NetworkReachabilityManager()!.isReachable
}

}

И я добавляю эти строки кода в каждый метод для проверки подключения к Интернету

if !Connectivity.isConnectedToInternet() {

        print("No internet connection")
        } else {
            print("connected")
        }

Это работаетно я не думаю, что это правильный способ постоянно проверять соединение.Я думаю, что я должен реализовать некоторый наблюдатель, используя Центр уведомлений из appDelegate, но я не знаю, как это сделать ...

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Не делай этого! В течение многих лет Apple говорила, что вы никогда не должны использовать проверку доступности в качестве предварительного условия для отправки запроса. Вместо этого вы должны выполнить запрос и справиться со сбоем, используя достижимость, чтобы, возможно, повторить запрос, когда обнаружится, что подключение было восстановлено. Достижимость не является надежной на 100%, и теперь она устарела для класса NWPathMonitor .

0 голосов
/ 01 апреля 2019

Как говорят Джон Шир и Мэтт, вы не должны этого делать.На самом деле, если вы используете Alamofire для загрузки изображения, я предлагаю вам использовать вместо AlamofireImage и использовать этот код:

let url = URL(string: yourUrl)!

        cell.yourImage.af_setImage(
            withURL: url,
            placeholderImage: placeholderImage,
            imageTransition: .crossDissolve(0.2),
            runImageTransitionIfCached: false,
            completion: { response in
                if response.result.isSuccess {
                    self.dismissLabel()
                } else if response.error?._code == NSURLErrorNotConnectedToInternet{
                    self.showLabel()
                }
        })

Таким образом, вы можете показать метку «Нет подключения к Интернету», когда AlamofireImage обнаруживает ошибку подключенияпри загрузке вашего изображения.Вместо этого, если ему удалось загрузить его, вы отклоняете ярлык.

...