检测Wi-Fi是否启用(无论是否连接)

7
对于 GPS 跟踪应用程序,开启 WIFI 后记录位置信号会导致非常不精确的数据或存在间断。我已经使用可达性查询来检测是否在开始跟踪之前有 WIFI 可用。问题在于,如果在进行查询时 WIFI 已启用但未连接到网络,则显示无法通过 WIFI 连接到互联网,但这并不能表明设置在设置应用中已禁用。这意味着,如果用户开始跑步并在跑步过程中建立了连接,他们将从 WIFI 而不是 GPS 或蜂窝网络获取位置信号。因此,这些数据点的准确度可能大于 10 米,所以我想跳过该点。问题在于,在 WIFI 上,他们将有一个大的空白期间,其中他们的信号未被记录。那么,我如何检查 WIFI 是否已启用但未连接?我已阅读了所有其他可达性讨论,但这似乎是一个空白,很多响应错误地建议可达性可以解决此问题。...而我不会要求 WIFI - 只需提醒他们它已启用,因此在他们的锻炼过程中可能会丢失位置数据(由于不准确)。

我试图实现相同的功能:https://dev59.com/L4Tba4cB1Zd3GeqP0AAN#26238866 - Asahi
2个回答

2

虽然你提问已经有一段时间了,但我刚好找到了这个问题。

如果你想遵守苹果的规则,目前似乎没有任何方法可以做到。因为sysctl和ioctl无法有效显示Wi-Fi是否已启用,没有相关的标志。例如,如果Wi-Fi已禁用或仅启用但未连接,则“UP”和“RUNNING”的标志将相同。

苹果自己的Wi-Fi框架使用mach直接与内核通信,我怀疑苹果是否允许这样的代码进入AppStore。


0

这是可能的,但解决方案很难懂且不美观。简短的答案是,如果您看到两个名称为“awdl0”的接口,则WiFi已启用,只有一个则已禁用。

请参见iOS上检测WiFi启用/禁用的更好方法?以获取更完整的描述和示例代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接