对于 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/