1、使用闭包:
funccheckNetworkForClosures() {
//监听网络变化
//网络可用或切换网络类型时执行
self.reachability.whenReachable = { reachabilityin
DispatchQueue.main.async {
print("可以监测网络")
//检测网络连接状态
ifself.reachability.isReachable {
print("网络连接:可用")
//检测网络类型
ifself.reachability.isReachableViaWiFi {
print("网络类型:Wifi")
}elseifself.reachability.isReachableViaWWAN{
print("网络类型:移动网络")
}else{
print("网络类型:无网络连接")
}
}else{
print("网络连接:不可用")
self.showNetworkAlert()
}
}
}
//网络不可用时执行
self.reachability.whenUnreachable = {
reachabilityin
DispatchQueue.main.async {
print("不能监测网络")
}
}
do{
//开始监听网络
tryself.reachability.startNotifier()
}catch{
print("开始监听网络失败")
}
}
2、使用通知:
funccheckNetworkForNotifications() {
// 1、设置网络状态消息监听2、获得网络Reachability对象
NotificationCenter.default.addObserver(self, selector:#selector(monitorReachabilityChanged(_:)), name: ReachabilityChangedNotification, object:self.reachability)
do{
// 3、开启网络状态消息监听
tryself.reachability.startNotifier()
}catch{
print("开始监听网络失败")
}
}
funcmonitorReachabilityChanged(_noti:NSNotification) {
letreachability = noti.objectas!Reachability
//检测网络连接状态
ifreachability.isReachable {
print("网络连接:可用")
//检测网络类型
ifreachability.isReachableViaWiFi {
print("网络类型:Wifi")
}elseifreachability.isReachableViaWWAN {
print("网络类型:移动网络")
}else{
print("网络类型:无网络连接")
}
}else{
print("网络连接:不可用")
DispatchQueue.main.async{//不加这句导致界面还没初始化完成就打开警告框,这样不行
//警告框,提示没有网络
self.showNetworkAlert()
}
}
}
//警告框,提示没有连接网络
funcshowNetworkAlert() {
letalert =UIAlertController.init(title:"系统提示", message:"请打开网络连接", preferredStyle: .alert)
letcancelAction =UIAlertAction.init(title:"确定", style: .default, handler:nil)
alert.addAction(cancelAction)
self.present(alert, animated:true, completion:nil)
}
网友评论