iOS 检查 WiFi 辅助是否已启用

2024-01-15

我正在尝试检查 WiFi 辅助是否已启用。当我连接到接入点获取一些数据时遇到问题,当我的连接状况不佳时,我的蜂窝数据会被使用并干扰我的接入点。有什么方法可以检查该选项是否启用?


好吧,我想我能帮上一点忙。你需要check SCNetworkReachabilityFlags https://developer.apple.com/reference/systemconfiguration/scnetworkreachabilityflags就我而言,这将是标志的特定组合。我未能找到支持哪种标志组合表明您正在使用 WI-FI 和蜂窝网络的文档,我也未能找到允许您直接检查该设置的文档。

根据之前的经验,Apple 可能无法让您直接检查该设置。

那么...这里有一些代码可以让我们开始吗?

public enum InternetStatus {
   case notReachable
   case reachableViaWWAN
   case reachableViaWiFi
   case wifiAssist
}

您可以在您选择的扩展中定义一个变量。 (或许URLSession?)

static public var internetStatus: InternetStatus {

    var zeroAddress = sockaddr_in()
    zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
    zeroAddress.sin_family = sa_family_t(AF_INET)

    guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
        $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
            SCNetworkReachabilityCreateWithAddress(nil, $0)
        }
    }) else {
        return .notReachable
    }

    var flags: SCNetworkReachabilityFlags = []

    if flags.contains(.connectionOnDemand) {
        print("Connection On Demand")
    }

    if flags.contains(.connectionAutomatic) {
        print("Connection Automatic")
    }

    if flags.contains(.connectionOnTraffic) {
        print("Connection On Traffic")
    }

    if flags.contains(.connectionRequired) {
        print("Connection Required")
    }

    if flags.contains(.interventionRequired) {
        print("Intervention Required")
    }

    if flags.contains(.isDirect) {
        print("isDirect")
    }

    if flags.contains(.isLocalAddress) {
        print("Local Address")
    }

    if flags.contains(.isWWAN) {
        print("WWAN")
    }

    if flags.contains(.reachable) {
        print("Reachable")
    }

    if flags.contains(.transientConnection) {
        print("Transient Connection")
    }


    if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
        return .notReachable
    }

    if flags.contains(.reachable) == false {
        // The target host is not reachable.
        return .notReachable
    }
    else if flags.contains(.isWWAN) == true {
        // WWAN connections are OK if the calling application is using the CFNetwork APIs.
        return .reachableViaWWAN
    }
    else if flags.contains(.connectionRequired) == false {
        // If the target host is reachable and no connection is required then we'll assume that you're on Wi-Fi...
        return .reachableViaWiFi
    }else if flags.contains(.connectionRequired) && flags.contains(.isWWAN) {
        // Not sure here, maybe Wi-Fi assist is currently being utilized? Will need to test.
        return .wifiAssist
    }else if (flags.contains(.connectionOnDemand) == true || flags.contains(.connectionOnTraffic) == true) && flags.contains(.interventionRequired) == false {
        // The connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs and no [user] intervention is needed
        return .reachableViaWiFi
    }
    else {
        return .notReachable
    }
}

诀窍是在您知道 Wi-Fi 辅助处于活动状态的设置中进行调试并观察标志。或者比我聪明,知道它们是什么。如果有人指出,或者我找出正确的标志组合,我会更新这个答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 检查 WiFi 辅助是否已启用 的相关文章

  • 具有自签名证书的 Alamofire / ServerTrustPolicy

    我想使用 Alamofire 通过带有自签名证书的 https 连接与我的服务器进行通信 我的环境在本地主机上运行 我尝试连接 但响应始终如下所示 Success false Response String nil 我用下面的代码完成了它
  • 由于没有系统应用程序而终止

    这个错误让我发疯 我有一个按钮 我想移动到视图控制器 如果我将其设置为初始视图控制器 我可以打开该视图控制器 但现在我通过单击按钮来调用它 视图控制器包含一个自定义视图 我在绘制矩形上放置了一个断点 当绘制矩形完成时 模拟器终止 我在屏幕上
  • prepareForSegue 和 PerformSegueWithIdentifier 发送方

    我想知道标题中的函数如何工作以及发送者参数 假设单击按钮调用了performSegue方法 那么这是否也调用了prepareSegue方法 是否在performSegue方法之前但在按下按钮之后调用prepareSegue方法 另外 这两个
  • 在集合视图单元格中播放视频,就像在 Facebook 应用程序时间轴中播放的视频一样

    我想在集合视图单元格中播放视频 要求就像 Instagram 时间线 播放视频就像在 facebook 时间线中播放视频 为此 我使用了 UICollectionViewCell 我有一些图像 没有视频 现在我是来自画廊的图像 我正在使用相
  • ios Facebook 添加 FBNativeAdView 作为子视图

    我想使用预建视图FBNativeAdView 不想自定义 FBNative 广告 如link https developers facebook com docs reference ios current class FBNativeAd
  • 了解 React Native 中的默认字体大小

    在过去的几个月里 我一直在开发一个 React Native 应用程序 但有些事情总是让我困惑 而我现在正试图弄清楚它的真相 我正在尝试标准化应用程序中的字体大小 正文 标题等 并且正在努力了解 React Native 究竟从哪里获取默认
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta
  • 在后台每 X 分钟执行一次函数不起作用

    我使用此代码每 X 分钟执行一次函数 void executeEveryOneMinute self myFunction dispatch after dispatch time DISPATCH TIME NOW int64 t 60
  • 使用 iPhone 控制蓝牙音频设备

    我正在寻找为 iPhone 编写应用程序 它将能够控制汽车中的收音机和 CD 播放器 收音机和播放器具有可用的蓝牙连接 我开始这个问题是为了获得这个地方所需的所有信息 我有几个问题 但如果您发现任何我没有要求的对我开始开发此应用程序不重要的
  • Cordova iOS 启动画面

    我无法让闪屏停留在页面加载之前 我已经阅读了谷歌搜索第一页 第二页和第三页中的所有条目 我阅读了 stackoverflow 上发布的所有问题 包括一个很好的解释 https stackoverflow com questions 1800
  • swift 中闭包和函数作为参数的区别

    我有将近 4 年的 Objective C 经验 并且是 swift 的新手 我试图从 Objective C 的角度理解 swift 的概念 所以如果我错了 请指导我 在目标 c 中 我们有块 可以稍后异步执行的代码块 这绝对是完全合理的
  • 从 plist 文件中解码数据

    我丢失了在 Macbook Air 上用 Textwrangler 编写的文本文件中的一些数据 我在扩展名为 plist 的文件中找到了其中一些 文件是用 xml 编写的 如下所示
  • Swift 3 中数组的 indexOf(_:) 方法的替换

    在我的项目 用 Swift 3 编写 中 我想使用从数组中检索元素的索引indexOf 方法 存在于 Swift 2 2 中 但我找不到任何替代方法 Swift 3 中是否有任何好的替代方法或类似的方法 Update 我忘记提及我想在自定义
  • 以编程方式检测应用程序是否正在设备或模拟器上运行

    我想知道我的应用程序在运行时是在设备还是模拟器上运行 有没有办法检测到这一点 原因是用模拟器测试蓝牙 api http volcore limbicsoft com 2009 09 iphone os 31 gamekit pt 1 woo
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • TableView 中图像的大小不正确

    我正在使用来自 URL 的图像创建一个表视图 但图像不会调整到所有视图的大小 直到我将其按入行中 知道为什么会发生这种情况吗 这是一个自定义的表格视图 我的代码是 UITableViewCell tableView UITableView
  • IOS 上图像的加密/解密

    我们正在使用加密 解密和 UIIMAGE 如果我们加密和解密 UIIMAge 而不保存到 iphone 画廊中 它工作正常 但如果我们加密 保存到画廊中 将 加密的图像 加载到应用程序中 然后解密它效果不好 我们使用这个函数来加密 解密 保
  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • ArraySlice 中的 Swift [重复]

    这个问题在这里已经有答案了 在数组上使用 prefix 方法后 我得到了所谓的 arraySlice 我怎样才能将其转换为数组 我试图从 FacebookGraphApi 获取 Ints 然后请求前 3 个 前缀 3 并尝试将它们添加到新数
  • 是否可以在增强现实应用程序中使用自定义 iOS UI 元素(例如 UILabel)

    我想知道是否可以使用像这样的 UI 元素UIButton UILabel在带有 ARKit 的增强现实应用程序中 如果您也对 UIView 子类的透明度模式感兴趣 请尝试我的示例https github com erikhric ar me

随机推荐

  • WordPress 3.0 自定义帖子类型与上传

    有没有一种方法可以在自定义帖子类型编辑页面上插入一个 或多个 上传字段 我不想使用包含所有字段和内容的媒体库 这是一个相当基本的示例 但它应该可以帮助您上路 function my upload field echo
  • 如何将 Tensorflow 数据集转换为 2D numpy 数组

    我有一个 TensorFlow 数据集 其中包含近 15000 个分辨率为 168 84 的彩色图像 每个图像都有一个标签 它的类型和形状是这样的 lt ConcatenateDataset shapes 168 84 3 types tf
  • RxSwift:onDispose 在 Alamofire 返回数据之前激活

    我正在尝试使用 rxSwift 和 Alamofire 从 REST swift 2 3 获取 JSON 数据 这是我的代码 func getArticles articlesReq ArticlesReq gt Observable lt
  • 在ggplot2中使用for循环排列多个图表

    我想生成一个 pdf 文件 其中显示多个图表 每个图表一个NetworkTrackingPixelId 我有一个与此类似的数据框 gt head data NetworkTrackingPixelId Name Date Impressio
  • mOffsetMatrix 在 Assimp 中实际上做了什么?

    我非常确定 mOffsetMatrix 将顶点从网格空间转换为骨骼空间 这一点已得到证实http assimp sourceforge net lib html structai bone html http assimp sourcefo
  • 被 robots.txt 禁止:scrapy

    在爬行网站时 例如https www netflix com https www netflix com 被 robots txt 禁止 https www netflix com gt 错误 没有下载响应 https www netfli
  • 即使我安装了 2.1,为什么“pip”需要“setuptools >= 0.8”?

    当我尝试时某些命令 https stackoverflow com q 20905350 656912 with pip 我收到一条错误消息 指出pip requires setuptools gt 0 8 for dist info 即使
  • 有没有办法使用 PHP 在 Windows 文件上切换“隐藏”或“只读”开关?

    UPDATED 正如标题所说 有没有办法使用 PHP 在 Windows 上切换 隐藏 或 只读 开关 我想在不打开外壳的情况下执行此操作exec 如果可能的话 一个文件不能是hidden 它总是在文件系统中 NIX 约定文件以 a 开头
  • Python3 - 以编程方式更改 PSD 图层的可见性

    是否可以在不使用 Photoshop 的情况下以编程方式更改 PSD 中的 PSD 图层可见性 我确实检查了 Python 的 PSD 库的各种实现 但它们最好的做法是返回可见性值 例如psd tools 但可见属性是只读的 所以我无法更改
  • Javascript 中的编码约定:括号之间使用空格

    根据 JSHint Javascript 程序员不应在第一个括号之后和最后一个括号之前添加空格 我见过很多添加空格的优秀 Javascript 库 如下所示 foo bar bad according to JSHint 而不是这样 foo
  • 不应使用 MISRA C 2012 规则 20.5 #undef

    我正在努力消除违反规则 20 5 的行为 示例代码 define VAL 2 int32 t func void int32 t n1 VAL undef VAL define VAL x x x return VAL n1 在不改变任何其
  • 如何将 React Native Promise 桥接到 Swift

    各位软件爱好者大家好 我目前正在开发一个 React Native 项目 我需要添加一些用 swift 编写的逻辑 我能够通过桥接 Objective C 和 Swift 来触发基本的 swift 函数 当我尝试用承诺来做某事时 问题就出现
  • docker-compose:在詹金斯上找不到命令

    我有一个 docker compose 文件 version 3 services mysql image mysql latest container name locations service mysql environment MY
  • R XTS 对象的逐月增长百分比

    我如何绘制以下数据的逐月增长情况 A 2008 07 01 0 2008 08 01 87 2008 09 01 257 2008 10 01 294 2008 11 01 325 2008 12 01 299 以 dput 格式 在约书亚
  • 更新 hadoop HDFS 文件

    我是 Hadoop 的新手 我一直读到 HDFS 主要是 一次写入 多次读取 我有一个用例 我可能需要对 HDFS 中存储的文件进行修改 我一直在研究是否有任何方法可以做到这一点 我的问题是是否可以将 HDFS 文件加载到 HBase 中
  • 使用 RVM 在 OS X 上安装 Ruby 1.9.3 时出现“没有适用于 gcc46 的可用公式”:

    我已经安装了 Homebrew 我正在尝试使用以下命令安装 RVM rvm install 1 9 3 head 我收到此错误 Installing required packages gcc46 Error running require
  • 如何在 github actions 中使用私有 docker 镜像

    我正在尝试在 github actions 中设置一个运行私有 docker 映像的作业 我将使用容器选项在该 docker 映像内进行构建 link https docs github com en actions reference w
  • Google Play 游戏服务无法登录

    几天来我一直在为这个问题而头撞墙 尽管阅读了许多描述 GPS 登录失败问题 解决方案的帖子 但我一直无法找到问题的解决方案 简而言之 我正在使用 LibGDX 框架在 Android Studio 中开发一款游戏 并添加了 BaseGame
  • IE10 上触摸点之间的间距

    我正在开发插件 flot touch js 它在 webkit 浏览器的图表上添加触摸交互性 平移和缩放 我也想让它在 IE10 上运行 但是我不知道如何恢复触摸点之间的空间 我需要这个来计算比例 在 webkit 浏览器上 我们可以使用这
  • iOS 检查 WiFi 辅助是否已启用

    我正在尝试检查 WiFi 辅助是否已启用 当我连接到接入点获取一些数据时遇到问题 当我的连接状况不佳时 我的蜂窝数据会被使用并干扰我的接入点 有什么方法可以检查该选项是否启用 好吧 我想我能帮上一点忙 你需要check SCNetworkR