1

我一直在研究Reachability類,並嘗試了Apple樣本和ddg中的一個。我想知道Reachability類是否在啓動通知程序後繼續發送/接收數據。Reach-ability類是否繼續在iOS開發中發送/接收數據?

當我開發一個經常連接到不同主機的應用程序時,我決定編寫一個單例並附加我需要的可達性類。一旦應用程序啓動,可啓動類將啓動並啓動它們的通知程序。我使用單例方法,因爲我希望這個單例類是可移植的,並且可以在沒有太多重寫的情況下應用於其他應用程序。我不確定這樣實施是否好主意,但它工作得很好。

但是,有人報告說,使用該應用程序後,他的設備電池消耗速度顯着加快,並且有人報告了更多的數據使用情況。我的應用程序不會在後臺發送/接收數據,所以我開始想知道它是否與可達性有關。

我試着通過Instrument來分析能源使用情況,我注意到即使我將應用程序置於閒置狀態,仍然有通過網絡接口進入的連續小數據(平均數百字節)。但是,幾乎沒有數據發送出去。

我知道Reachability在啓動時需要數據使用(解析DNS等),但我不確定啓動通知程序後是否仍然繼續使用數據。有人可以告訴嗎?

我對低級編程不熟悉,如果有人能解釋Reachability如何工作,那將會很好。

+0

如果您註釋掉可達性代碼並假定它始終得到連接,您的應用是否仍在使用網絡? – deanWombourne

+0

啊..我沒有考慮到它,因爲評論可達性破壞了我的應用程序。無論如何,我可以確認在追蹤網絡活動後可達性不會使用數據。 –

回答

0

我使用可達性,雖然我沒有監測到連接,但我瀏覽了代碼,並且看不到任何保持發送(或接收)的原因。

如果你有一個以太網連接到你的Mac,這是很容易檢查。啓用通過以太網連接的WiFi共享。安裝小流星,它將在每次啓動後以演示模式運行三個小時。關閉測試設備上的數據連接並通過wifi將其連接到Mac。

這將允許您看到您的測試設備正在進行的任何網絡訪問。

如果這是不可能的,你也可以在模擬器中運行你的應用程序,因爲網絡端應該是相同的,所以你應該能夠檢查。

還有很多其他的工具來跟蹤網絡活動,但我認爲最小的snitch是最容易使用的。

+0

非常感謝。我將嘗試按照建議跟蹤網絡活動。 –

+1

經過wireshark的一些實驗後,我可以確認'Reachability'不會使用數據。發送到設備的幾百個字節是DHCP廣播。 –