ios - 检测 wifi 启用(无论是否连接)

标签 ios gps wifi reachability

对于 GPS 跟踪应用程序,在打开 WIFI 的情况下记录位置信号会导致数据非常不精确或数据有间隙。

在开始跟踪之前,我使用可达性查询来检测 wifi 是否可用。问题是,如果在进行该查询时启用了 wifi 但未连接到网络,则表明无法通过 wifi 访问互联网,但这并不表示设置应用程序中是否禁用了该设置。这意味着如果用户开始运行并在运行中途建立连接,他们将从 wifi 而不是 GPS 或蜂窝网络获得位置信号。因此,这些数据点的精度可以 > 10 米,所以我想跳过那一点。问题是,在 wifi 上,他们将有一段很长的空白期,他们的信号没有被记录下来。

那么如何检查 wifi 是否启用但断开连接?

我已经阅读了我能找到的所有其他关于可达性的讨论,但这似乎是一个空白,许多回复错误地暗示可达性可以开箱即用地解决这个问题。

...而且我不会要求 wifi - 只是提醒他们它已启用,因此在他们锻炼的某个时候他们的位置数据可能会丢失(由于不准确) ).

最佳答案

你问了很久了,但我刚遇到这个。

如果你想遵守 Apple 的规则,看起来没有什么办法可以做到。 sysctl 和 ioctl 将不起作用,因为没有标志会向您显示 WiFi 是否已启用。例如,如果禁用 WiFi 或启用 WiFi 但未连接,则“UP”和“RUNNING”的标志将相同。

Apple 自己的 WiFi 框架使用 mach 直接与内核通信,我怀疑 Apple 会在 AppStore 中允许此类代码。

关于ios - 检测 wifi 启用(无论是否连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744658/

相关文章:

android - Cordova调度任务

android - 我的 Android 程序上的 GPS 坐标不准确

ios - Objective-C - 即使应用了 sqlite3_close(),sqlite3_open 内存泄漏

ios - 默认应用尚未配置

iOS 8 – 在设置关键窗口或关闭并立即呈现另一个 View Controller 后快速呈现 View Controller 时出现故障

android - 位置应用程序不断崩溃

java - 如何?监听位置设置是否已打开(Android 应用程序)

android - 当我禁用数据连接或 wifi 时服务停止

wifi - 如何从无线路由器捕获原始信号?

iphone - 检测wifi是否开启 - iOS