菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
316
0

[Xcode 实际操作]八、网络与多线程-(1)使用Reachability类库检测网络的连接状态

原创
05/13 14:22
阅读数 23429

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

目录:[Swift]Xcode实际操作

本文将演示如何使用Reachability网络状态检测库,检测设备的网络连接状态。

需要下载一个开源的类库:【ashleymills/Reachability.swift】

这是一个用来检测设备网络状态的库。

支持自动引用计数,并且使用闭包的方式,来通知网络状态的变化。

【Clone or download】下载类库。

将【Sources】->【Reachability.swift】文件拖入到项目中,只需要添加这个文件即可。

->【Finish】将文件导入到项目中。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4     
 5      //给当前的视图控制器添加一个网络监测属性
 6     var reachability : Reachability!
 7     override func viewDidLoad() {
 8         super.viewDidLoad()
 9         // Do any additional setup after loading the view, typically from a nib.
10         
11         //对网络监测属性进行初始化
12         reachability = Reachability()
13         
14         //调用网络监测方法,判断当前设备的网络环境
15         reachability.whenReachable = { reachability in
16             //获得网络状态之后返回主线程进行响应
17             DispatchQueue.main.async
18             {
19                 //如果当前的网络环境,是通过无线网络连接
20                 if reachability.connection == .wifi
21                 {
22                     //则在控制台打印输出日志
23                     print("Reachable via WiFi")
24                 }
25                 else
26                 {
27                     //如果当前的网络环境是蜂窝移动网络
28                     //则在控制台打印输出相关日志
29                     print("Reachable via Cellular")
30                 }
31             }
32         }
33 
34         //处理网络无法连接的情况。
35         reachability.whenUnreachable = { reachability in
36             //如果设备无网络连接
37             DispatchQueue.main.async
38             {
39                 //则在控制台打印输出相关日志
40                 print("Not reachable")
41             }
42         }
43         
44         //创建一个异常捕捉语句
45         do
46         {
47             //调用网络检测对象的开始检测方法,
48             //开始检测网络的状态
49             try reachability.startNotifier()
50         }
51         catch
52         {
53             print("Unable to start notifier")
54         }
55     }
56     
57     //在视图控制器类的析构方法中
58     deinit
59     {
60         //停止网络状态的检测
61         reachability.stopNotifier()
62     }
63 
64     override func didReceiveMemoryWarning() {
65         super.didReceiveMemoryWarning()
66         // Dispose of any resources that can be recreated.
67     }
68 }

 

发表评论

0/200
316 点赞
0 评论
收藏