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

ear*_*ian 7 gps wifi reachability ios

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

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

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

我已经阅读了我能找到的所有其他可达性讨论,但这似乎是一个差距,有很多回复错误地表明可达性解决了这个开箱即用的问题.

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

Yll*_*Dev 2

自从你问起以来已经有一段时间了,但我刚刚遇到这个。

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

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