Swift实时监听判断是否连接有网络WIFI和蜂窝数据
本章节讲解如何使用swift连接网络,实时的监听到网络的状态,在主界面中进行调用,网络包含Wi-Fi 和 蜂窝。
1.封装一个判断是否有网络的类
2.在封装类注册通知
3.主界面接收注册通知,并且调用封装的网络类
4.成功测试,有网络为true,否则false
一:AllExpanded类
import UIKit
import WHToast
import MBProgressHUD
import SystemConfigurationclass AllExpanded{private var hud:MBProgressHUD?init() {startNetworkReachabilityNotifier()}func isConnectedToNetwork() -> Bool {var zeroAddress = sockaddr_storage()zeroAddress.ss_len = __uint8_t(MemoryLayout<sockaddr_storage>.size)zeroAddress.ss_family = sa_family_t(AF_INET)let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {$0.withMemoryRebound(to: sockaddr.self, capacity: 1) { zeroSockAddress inSCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)}}var flags: SCNetworkReachabilityFlags = []if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {return false}let isReachable = flags.contains(.reachable)let needsConnection = flags.contains(.connectionRequired)let canConnectAutomatically = flags.contains(.connectionOnDemand) || flags.contains(.connectionOnTraffic)//let usesWiFi = flags.contains(.isWWAN)return isReachable && (!needsConnection || canConnectAutomatically)}func startNetworkReachabilityNotifier() {var zeroAddress = sockaddr_storage()zeroAddress.ss_len = __uint8_t(MemoryLayout<sockaddr_storage>.size)zeroAddress.ss_family = sa_family_t(AF_INET)let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {$0.withMemoryRebound(to: sockaddr.self, capacity: 1) { zeroSockAddress inSCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)}}var context = SCNetworkReachabilityContext(version: 0,info: UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque()),retain: nil,release: nil,copyDescription: nil)if SCNetworkReachabilitySetCallback(defaultRouteReachability!, { (_, flags, info) inlet reachability = Unmanaged<AllExpanded>.fromOpaque(info!).takeUnretainedValue()reachability.notifyReachabilityChanged(flags)}, &context) {SCNetworkReachabilityScheduleWithRunLoop(defaultRouteReachability!, CFRunLoopGetCurrent(), CFRunLoopMode.defaultMode.rawValue)}}func notifyReachabilityChanged(_ flags: SCNetworkReachabilityFlags) {let isReachable = flags.contains(.reachable)let needsConnection = flags.contains(.connectionRequired)let canConnectAutomatically = flags.contains(.connectionOnDemand) || flags.contains(.connectionOnTraffic)let reachable = isReachable && (!needsConnection || canConnectAutomatically)NotificationCenter.default.post(name: .reachabilityChanged, object: nil, userInfo: ["reachable": reachable])}}extension Notification.Name {static let reachabilityChanged = Notification.Name("reachabilityChanged")
}
二:LoginViewController类
override func viewDidLoad() {super.viewDidLoad()//接收注册的通知NotificationCenter.default.addObserver(self, selector: #selector(handleReachabilityChange(_:)), name: .reachabilityChanged, object: nil)
}@objc private func handleReachabilityChange(_ notification: Notification) {if let userInfo = notification.userInfo, let isReachable = userInfo["reachable"] as? Bool {//显示与隐藏红色的提示框(没有网络)if isReachable {loginView.netWorkVm.isHidden = true} else {loginView.netWorkVm.isHidden = false}}}
至此就阐述完毕,功能测试成功,运行到手机上,切换网络可实时的监听打印到数据信息;
相关文章:
Swift实时监听判断是否连接有网络WIFI和蜂窝数据
本章节讲解如何使用swift连接网络,实时的监听到网络的状态,在主界面中进行调用,网络包含Wi-Fi 和 蜂窝。 1.封装一个判断是否有网络的类 2.在封装类注册通知 3.主界面接收注册通知,并且调用封装的网络类 4.成功测试,有…...
(三)Flink Source 数据源
Flink 数据源主要分为内置数据源和第三方数据源。其中内置数据源包含文件、Socket 连接、集合类型数据等,不需要引入其它依赖库。第三方数据源定义了 Flink 和外部系统数据交互的逻辑,Flink 提供了非常丰富的数据源连接器,例如 Kafka、Elasticsearch、RabbitMQ、JDBC 等。 …...
第四届机电一体化、自动化与智能控制国际学术会议(MAIC 2024)
目录 大会官网 会议简介 组织机构 大会主席 程序委员会主席 主讲嘉宾 征稿主题 参会说明 大会官网 http://www.icmaic.org 会议简介 第四届机电一体化、自动化与智能控制国际学术会议(MAIC 2024)将于2024年9月27-29日在中国成都召开。MAIC 20…...
leetcode 089 打家劫舍
leetcode 089 打家劫舍 题目 一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定…...
等保测评基础知识(六)
《计算机病毒防治管理办法》51号令 第十四条 从事计算机设备或者媒体生产、销售、出租、维修行业的单位和个人,应当对计算机设备或者媒体进行计算机病毒检测、清除工作,并备有检测、清除的记录。 第十九条 计算机信息系统的使用单位有下列行为之一的,由公安机关处以警告…...
作业帮 TiDB 7.5.x 使用经验
作者: 是我的海 原文来源: https://tidb.net/blog/5f9784d3 近期在使用 TiDB 时遇到的一些小问题的梳理总结,大部分版本都在6.5.6和7.5.2 1、limit 导致的扫描量过大的优化 研发定时任务每天需要扫描大量数据,到时机器网卡被…...
c语言练习题1
1.输出Helloword /*输出Helloword*/ #include<stdio.h> int main() {printf("Hello word!");return 0; }2.整型变量的定义与使用 /*整型变量的定义与使用*/ #include <stdio.h> int main() {int a;int b;a 10;b 20;int c a b;int d a - b;printf(…...
嵌入式开发就业方向有哪些?前景未来可期!
在科技日新月异的今天,嵌入式系统几乎渗透到了我们生活的各个角落。从简单的家用电器到复杂的工业自动化设备,再到我们手中的智能手机,无一不体现出嵌入式技术的魅力。因此,嵌入式领域的就业前景广阔,为众多求职者提供…...
系列:水果甜度个人手持设备检测-github等开源库和方案
系列:水果甜度个人手持设备检测 -- github等开源库和方案 概述 通常来说,年纪轻轻的我们一般都喜欢走捷径,对于智能设备和算法软件领域来说,GitHub应该算为数不多的的捷径之一。就算因为效果不好/知识产权/方向不同等原因不用,…...
Visual Studio中 生成版本号
Visual Stuodio WPF项目 自动生成版本号 生成递增版本号 软件版本号主要标识了软件的版本,通过其可以了解软件、类库文件的当前版本,使得软件版本控制有所依据。 我们也可以在项目属性上可以看到相关设置的界面,对应的英文名称分别为&#…...
AI入门指南(四):分类问题、回归问题、监督、半监督、无监督学习是什么?
文章目录 一、前言二、分类问题、回归问题是什么?分类问题概念常见算法分类问题的实际应用:银行贷款审批案例 回归问题概念常见算法回归问题实际应用:线性回归模型预测房价 小结 三、监督、半监督、非监督学习是什么?监督学习非监…...
Linux下本地端口转发
在Linux下进行本地端口转发处理,可以进行如下操作: 1.确认NetFilter相关驱动编译到内核,并且CONFIG_IP_NF_TARGET_REDIRECTy; 2.开启转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward; 3.设置转发规…...
RPC 和 HTTP 理解
网上充斥着各类类似于这样的文章:rpc 比 http 快了多少倍?既然有了 http,为什么还要用 rpc 调用等等。遇到这类文章,说明对 http 和 rpc 是由理解误区的。 这里再次重复强调一遍,通信协议不是 rpc 最重要的部分&#x…...
Visual Studio 2022 v17.11 发布
Visual Studio 2022 版本 17.11 正式发布 (GA),此版本主要是基于用户反馈的各项改进。 “每项增强、每项修复和每项新功能均根据你的反馈而制定。无论你是在构建 Web、桌面、云还是游戏应用程序,Visual Studio 2022 v17.11 都旨在让你的开发体验更流畅、…...
通讯专题-RS232
1 概述 RS-232是一种点对点通信协议,这意味着每个数据信号沿一根导线传输(差分信号使用两根导线传输一个数据信号),RS-232为全双工方式运行(总线可同时发送和接收数据)。 根据新修订的标准为容性负载为2500…...
桥接模式详解
桥接模式 概念: 将抽象部分和实现部分分离, 使他们都可以独立的变化 概念很抽象, 难以理解, 我们举个例子 例子 设想三种不同品牌的汽车 大车 中车 小车 三种不同类型的引擎 纯电引擎 混动引擎 燃油引擎 如果我们把他们两两组合, 都继承同一个类的话,就会有9个类, 并且如果后…...
使用一致性哈希解决哈希分片负载均衡的扩展性问题
声明:本文的图全部源于:小林coding 上来咱先说,一致性哈希是应对分布式系统的算法 假设有一个负载均衡问题,也就是大批流量来请求,那怎么分配这些流量? 随机?还是挨个轮询? 这都…...
探索 Resolume Arena 7 - 引领 VJ 音视频创作的卓越软件
Resolume Arena 7 是一款专为 Mac 和 Windows 系统设计的强大 VJ 音视频软件,为创意专业人士和爱好者提供了丰富而出色的功能。 这款软件拥有直观且用户友好的界面,即使对于初学者来说,也能快速上手并开始创作。其强大的媒体管理功能&#x…...
三勾点餐系统|支持多端发布,方便二次开发
版本号1.7更新日志 新增:腾讯地图key设置(更新后请设置key) 新增:支付宝小程序登录和支付 新增:前端点餐时选择门店 新增:前端点餐页面优惠活动显示 新增:H5修改手机号 新增:H…...
深入理解AES加密算法:原理与Python实现
目录 深入理解AES加密算法:原理与Python实现1. AES算法简介2. AES加密解密流程3. Python实现AES加密解密4. 结论 深入理解AES加密算法:原理与Python实现 AES (Advanced Encryption Standard) 是目前最广泛使用的对称加密算法之一。它具有高效、安全和灵…...
深度解析Scarab:空洞骑士模组管理器的专业实现与架构设计
深度解析Scarab:空洞骑士模组管理器的专业实现与架构设计 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 空洞骑士模组管理器Scarab为玩家提供了高效、专业的模组…...
地下态势智能研判,拔高硐室深部安全透明管控等级技术白皮书
地下态势智能研判,拔高硐室深部安全透明管控等级技术白皮书 副标题:全要素三维动态重建井下场景,融合井下无感坐标解算、跨断面跨镜轨迹串联、身体指纹人员轨迹存档,井下风险前置感知、动态全程透明追溯 前言 矿山井下深部硐室与纵…...
3分钟掌握猫抓扩展:轻松捕获网页视频的终极秘籍
3分钟掌握猫抓扩展:轻松捕获网页视频的终极秘籍 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况࿱…...
告别网络依赖:CircuitJS1桌面版带你体验离线电路仿真的自由
告别网络依赖:CircuitJS1桌面版带你体验离线电路仿真的自由 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1…...
基于Groq LPU与React技术栈构建极速AI聊天应用实战
1. 项目概述:当极速推理遇上聊天应用最近在折腾AI应用开发的朋友,估计都绕不开一个词:推理速度。模型能力再强,如果生成一句话要等上十几秒,用户体验就无从谈起。正是在这种背景下,我注意到了unclecode/gro…...
VS Code光标主题定制指南:提升开发效率与视觉舒适度
1. 项目概述:一个为开发者量身定制的光标主题集合如果你和我一样,每天有超过8个小时的时间是在代码编辑器里度过的,那么你一定对那个在屏幕上闪烁的光标再熟悉不过了。它不仅仅是文本插入点,更是我们思维在数字世界中的延伸。然而…...
【ElevenLabs情绪模拟技术白皮书】:基于2,147小时情感语音标注数据集的11类基础情绪迁移模型验证报告
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs情绪模拟技术白皮书概述 ElevenLabs的情绪模拟技术并非简单调节音高或语速,而是基于多模态情感表征学习(Multimodal Affective Representation Learning, MARL&#x…...
怎么判断一家工厂还在不在正常生产?6 类活跃度信号,从纸面到现场
跑工厂的销售员都遇到过这种事:手机里存着一份名单,导航开两小时,到门口才发现卷帘门焊死、车间长草、保安说"厂子去年就搬了"。 问题出在哪?大多数人判断"这家工厂在不在",靠的是工商登记——执照…...
Claude-Code-KnowCraft:轻量级代码知识库构建与智能问答实践
1. 项目概述与核心价值最近在跟几个做AI应用开发的朋友聊天,大家普遍有个痛点:想把Claude这类大语言模型(LLM)的能力深度集成到自己的代码库分析工具里,但发现现有的方案要么太重,要么太浅。太重的是指那些…...
I2C地址冲突全解析:从原理到实战的嵌入式系统设计指南
1. I2C地址:嵌入式系统设计的“门牌号”与“交通规则”如果你玩过单片机或者树莓派,肯定对I2C不陌生。两根线,SDA和SCL,就能挂上一堆传感器、显示屏、扩展芯片,听起来简直是嵌入式开发的“万金油”。但真正上手后&…...
