Swift实时监听网络状态(更新到Swift3)
2016-07-22 16:06
786 查看
最近做个项目,需要实时的监听网络连接状态,网络连接断开时需要提醒用户手动打开网络,网络重新连接上之后需要做些操作。身为小白的我感到很有压力,所以就不自觉的又上度娘那里去取经了。(哈哈,初学者嘛,大家理解)自己整理下,加深下印象以后也方便用 :)
下面直入正题,如何实现实时监听网络连接状态:
第一步,需要引入Reachability.swift文件
(下载链接:https://github.com/ashleymills/Reachability.swift)
Just drop the Reachability.swift file into your project. That’s it!
(直接找到Reachability.swift文件拖到你的项目中就可以啦。)
第二步,进入到ViewController文件
/********************************************** 网络状态监听部分(开始) **********************************************/ // Reachability必须一直存在,所以需要设置为全局变量 let reachability = Reachability()! func NetworkStatusListener() { // 1、设置网络状态消息监听 2、获得网络Reachability对象 NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged),name: ReachabilityChangedNotification,object: reachability) do{ // 3、开启网络状态消息监听 try reachability.startNotifier() }catch{ print("could not start reachability notifier") } } // 移除消息通知 deinit { // 关闭网络状态消息监听 reachability.stopNotifier() // 移除网络状态消息通知 NotificationCenter.default.removeObserver(self, name: ReachabilityChangedNotification, object: reachability) } // 主动检测网络状态 func reachabilityChanged(note: NSNotification) { let reachability = note.object as! Reachability // 准备获取网络连接信息 if reachability.isReachable { // 判断网络连接状态 print("网络连接:可用") if reachability.isReachableViaWiFi { // 判断网络连接类型 print("连接类型:WiFi") // strServerInternetAddrss = getHostAddress_WLAN() // 获取主机IP地址 192.168.31.2 小米路由器 // processClientSocket(strServerInternetAddrss) // 初始化Socket并连接,还得恢复按钮可用 } else { print("连接类型:移动网络") // getHostAddrss_GPRS() // 通过外网获取主机IP地址,并且初始化Socket并建立连接 } } else { print("网络连接:不可用") DispatchQueue.main.async { // 不加这句导致界面还没初始化完成就打开警告框,这样不行 self.alert_noNetwrok() // 警告框,提示没有网络 } } } // 警告框,提示没有连接网络 ********************* func alert_noNetwrok() -> Void { let alert = UIAlertController(title: "系统提示", message: "请打开网络连接", preferredStyle: .alert) let cancelAction = UIAlertAction(title: "确定", style: .default, handler: nil) alert.addAction(cancelAction) self.present(alert, animated: true, completion: nil) } /********************************************** 网络状态监听部分(结束) **********************************************/
如果编译无误的话,运行程序后在电脑上输出些内容,这是尝试切换网络状态试试,有没有提示。我自己在真机上测试成功。
大家加油!
相关文章推荐
- Retrofit2.0使用小结
- 推荐10 个短小却超实用的 JavaScript 代码段(http://www.jianshu.com/p/3ef822ec5a63)
- 图论(网络流):[HNOI 2013]切糕
- 怎样提高程序员的软实力,走上人生巅峰(http://bbs.jointforce.com/topic/17845?ref=myread)
- NAT 原理与NAT穿越
- web缓存技术和HTTP代理
- 简明网络I/O模型---同步异步阻塞非阻塞之惑
- http--状态码
- java基础——用HttpURLConnection向服务器发送POST请求
- inet_ntoa()网络字节序IP转化为点分十进制IP
- 面试 之 大小端-ip地址网络转本地 等
- 有关servlet、httpservlet
- Web工作方式-转载
- 网络测试工具iperf的简单使用
- http://my.oschina.net/noahxiao/blog/101558
- 自己生成网络后台接口并利用charles模拟Http请求和响应
- HTTP协议详解
- HTTP协议的头信息 详解解读
- HTTP协议详解(真的很经典)
- httpclient发起https请求以及获取https返回内容