2012-01-05 136 views
7

对于GPS跟踪应用程序,开启WIFI的记录位置信号会导致数据或数据不准确。检测wifi是否启用(不管它是否已连接)

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

那么如何检查WiFi是否启用但是已断开?

我已经阅读了所有我能找到的其他可达性讨论,但这似乎是一个错误地提示可达性解决了这个问题的答案。

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

+0

我试图实现相同的:http://stackoverflow.com/a/26238866/367677 – Asahi 2014-12-31 08:56:56

回答

2

自从你问了很长一段时间,但我刚刚遇到了这个。

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

苹果自己的WiFi框架使用mach直接与内核沟通,我怀疑苹果会允许这样的代码在AppStore中。

0

这是可能的,但解决方案是模糊和丑陋的。简短的回答是,如果你看到名为“awdl0”的两个接口,那么WiFi就被启用,只有一个,它被禁用。

有关更完整的说明和示例代码,请参见Better way to detect WiFi enabled/disabled on iOS?