Проверьте соединение в Swift - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь попросить пользователя проверить соединение через метку, если возникла проблема, и если соединение снова заработает, метка исчезнет.Мой код работает нормально, но когда я выключаю Wi-Fi вручную, ярлык не появляется, пока я не закрою и снова не открою приложение !!Я не понимаю, что надеть на мой код, чтобы каждый раз проверять его, не закрывая и не открывая приложение?

func InternetCheck () -> Bool {

    var zeroAddress = sockaddr_in()
    zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)

    let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
            $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
            SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
        }
    }

    var flags = SCNetworkReachabilityFlags()
    if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
        return false
    }
    let isReachable = flags.contains(.reachable)
    let needsConnection = flags.contains(.connectionRequired)
    return (isReachable && !needsConnection)
}

 override func viewDidLoad() {
    super.viewDidLoad()
    if InternetCheck() == false {

       stsLabel.text = "Check your Internet Connection"

    } else {
      stsLabel.isHidden = true
}
}

1 Ответ

0 голосов
/ 04 февраля 2019

Вы вызываете InternetCheck () в viewDidLoad (), и для него нет прослушивателя, и он будет вызываться один раз.Попробуйте что-то вроде этого:

let reachabilityManager = Alamofire.NetworkReachabilityManager(host: "www.apple.com")

override func viewDidLoad() {
    listenForReachability()
}


func listenForReachability() {
    self.reachabilityManager?.listener = { [weak self]status in
        switch status {
        case .notReachable:
            self?.showNoInternetConnectionAlert()
        case .unknown :
            print("It is unknown whether the network is reachable")
        case .reachable(.ethernetOrWiFi):
           //do sth
        case .reachable(.wwan):
           // do sth
        }
    }
    self.reachabilityManager?.startListening()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...