【问题标题】:Show Alert if no Network Connection没有网络连接时显示警报
【发布时间】:2017-06-29 11:29:16
【问题描述】:

如何通知用户 swift 3 没有网络连接。我尝试了很多解决方案,但到目前为止都没有奏效。我不是在寻找网络连接的速度

【问题讨论】:

标签: swift


【解决方案1】:

有很多资源展示了如何检查互联网连接。例如,来自this

    func isInternetAvailable() -> 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)
    }

    func showAlert() {
        if !isInternetAvailable() {
            let alert = UIAlertController(title: "Warning", message: "The Internet is not available", preferredStyle: .alert)
            let action = UIAlertAction(title: "Dismiss", style: .default, handler: nil)
            alert.addAction(action)
            present(alert, animated: true, completion: nil)
        }
    }

你需要导入:

import Foundation
import SystemConfiguration

【讨论】:

  • 您可以从viewDidLoad()堡垒测试中致电showAlert()
  • 任何地方,都取决于您的设计。如果您在 ViewController 中并想要测试,请将其放在那里。
  • 我把它放在视图控制器中,什么也没发生
  • 1.在viewDidLoad 中呼叫showAlert()? 2. 关掉网络? 3. 调试看看代码运行是否正确?
  • 做了 1 和 2 但不是三个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2011-06-03
相关资源
最近更新 更多