2012-01-05 137 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?