Swift 判断网络连接状态

很多小伙伴在判断网络连接状态的时候引用了其它库,比如Reachability等等. 但是我们是可以通过Alamofire进行判断的~引入这些库就没有必要了哦.

怎么用Alamofire来进行网络连接状态的判断呢?

Alamofire里面提供了NetworkReachabilityManager来管理网络连接状态.

    public enum NetworkReachabilityStatus {
        case unknown
        case notReachable
        case reachable(ConnectionType)
    }

这就是三种网络状态:从上到下分别对应,未知,无法连接,可连接

    public enum ConnectionType {
        case ethernetOrWiFi
        case wwan
    }

这是两种连接类型:无线网络,移动网络

    public var isReachable: Bool { return isReachableOnWWAN || isReachableOnEthernetOrWiFi }

    public var isReachableOnWWAN: Bool { return networkReachabilityStatus == .reachable(.wwan) }

    public var isReachableOnEthernetOrWiFi: Bool { return networkReachabilityStatus == .reachable(.ethernetOrWiFi) }

可以通过这3个属性, 来判断当前的网络环境.

    public var listener: Listener?

    private var flags: SCNetworkReachabilityFlags? {
        var flags = SCNetworkReachabilityFlags()

        if SCNetworkReachabilityGetFlags(reachability, &flags) {
            return flags
        }

        return nil
    }

通过listener可以监听网络变化哦,这样看起来可能有点不够明显,举一个实际应用的例子吧~

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

func listenForReachability() {
    self.reachabilityManager?.listener = { status in
        print("Network Status Changed: \(status)")
        switch status {
        case .NotReachable:
            //Show error state
        case .Reachable(_), .Unknown:
            //Hide error state
        }
    }

    self.reachabilityManager?.startListening()
}

可以看出reachability是可以指定host的,当然也可以不指定,如果不指定的话,默认就是监听的设备网络状态.
最后,不要忘记在deinit方法中stopListening哦.

有问题欢迎留言~ 我们一起探讨~ -

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,296评论 4 61
  • 本篇主要讲解iOS开发中的网络监控 前言 在开发中,有时候我们需要获取这些信息: 手机是否联网 当前网络是WiFi...
    老马的春天阅读 3,213评论 5 12
  • 很多人问我,为什么我的网名叫天梯,其实啊,我是喜欢这首歌,当然,更喜欢它背后的故事。 和许多人一样,我也曾憧憬一场...
    沐寒ty阅读 750评论 0 1
  • 雨刚刚停了 一个中年女人站在商店的冰箱旁 默默地看着手机里的男人 没有声音 只有一双手比划着 女人安静的看着 羞涩...
    葛卡阅读 228评论 0 2
  • 在聽取專家建議及忠告時, 要能融會貫通, 思考後實施在自己身上。專家只能給幫助, 思考及執行都要靠自我。 做決策時...
    妹酱让今天比昨天更好阅读 124评论 0 0