2016-06-23 2 views
1

Я работаю над приложением iOS, требующим подключения к Интернету. Я заметил, что приложение FaceBook обновляет экран, чтобы сообщить вам, когда вы потеряли соединение. Он также удаляет предупреждение при восстановлении вашего соединения.Как некоторые приложения iOS знают, когда теряется интернет-соединение

Мой вопрос: как это происходит? Поскольку представление уже загружено, должен существовать некоторый тип уведомления, которое вызывается, если соединение потеряно или восстановлено. Сегодня вечером я установил популярный код Reachability из GitHub, и если я отключу свое соединение после загрузки представления, я не получил уведомление о том, что соединение было потеряно. Я зарегистрировался для уведомления. Код ниже.

override func viewWillAppear(animated: Bool) 
    { 
     super.viewWillAppear(animated) 

     var reachability: Reachability? 

     //declare this inside of viewWillAppear 
     do { 
      reachability = try Reachability.reachabilityForInternetConnection() 
     } catch { 
      print("Unable to create Reachability") 
      return 
     } 

     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(TipViewController.reachabilityChanged(_:)),name: ReachabilityChangedNotification,object: reachability) 
     do{ 
      try reachability?.startNotifier() 
     }catch{ 
      print("could not start reachability notifier") 
     } 
    } 

    func reachabilityChanged(note: NSNotification) { 

     let reachability = note.object as! Reachability 

     if reachability.isReachable() { 
      if reachability.isReachableViaWiFi() { 
       print("Reachable via WiFi") 
      } else { 
       print("Reachable via Cellular") 
      } 
     } else { 
      print("Network not reachable") 
     } 
    } 

Любая помощь будет оценена по достоинству.

+0

Любое решение? Способется ли запуск метода при изменении подключения к Интернету? –

+0

Я экспериментировал и решил это. Если я объявлю экземпляр достижимости по всему миру, он сработает. Благодарю. –

ответ

0

Сначала добавьте файл Reachability.swift в свой проект, который вы можете получить здесь ниже ссылке

https://github.com/pavangandhi/TestProject/tree/master/TestProject/AppConstants

Используйте ниже приведенный код, чтобы проверить приложение связано с интернетом или нет:

// check internet connectivity if its returns YES means its connect with internet, Wifi and cellular data 

class func isConnectedToNetwork() -> Bool 
{ 
    let reachability = Reachability.reachabilityForInternetConnection() 

    if reachability.isReachable() || reachability.isReachableViaWiFi() || reachability.isReachableViaWWAN() 
    { 
     return true 
    } 
    else 
    { 
     return false 
    } 
} 

Примечание: перед добавлением этого кода в проект необходимо добавить файл Reachability.swift.

+1

Я не вижу, как это меня обновляет, если я отключу или отключу Wi-Fi без перезагрузки представления. Я что-то упускаю? – jonthornham

+0

всякий раз, когда вы идете для выполнения любых событий, которые требовали сетевого подключения, поэтому в это время вы можете использовать это и показывать всплывающее окно пользователю. –

+1

Я знаю, что это вариант, но это не решает вопрос, который я задал. Спасибо за помощь независимо. – jonthornham

0

Использование This

А затем вызвать isConnectedToNetwork() где и хотите нравится:

guard isConnectedToNetwork() != false else{ 
//Do your thing 
return 
} 
// Do your thing if is connected is true 
Смежные вопросы