我正在開發一個iPhone應用程序,每當我打電話給我的Web服務我想確保用戶連接到互聯網。iOS可訪問性說在3g沒有互聯網連接可到達
我使用了Tony Million在github上提供的Reachability類,鏈接是她想要抓住它的人。 https://github.com/tonymillion/Reachability
的我只是跟着例子,設置好一切,並有下面的代碼
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability*reach)
{
// call web service here
};
reach.unreachableBlock = ^(Reachability*reach)
{
// alert user not reachable
};
[reach startNotifier];
現在我測試這個在模擬器,一切工作完全正常,當連接到WiFi我的服務被稱爲。如果我關閉無線網絡,我會看到顯示的警報正是我所需要的。
現在我在設備上測試這個並獲得相當不錯的結果,但不完全是我所需要的。請注意,我的手機沒有數據包,這一點很重要。
因此,這裏有我的手機連接到WiFi和運行應用程序的情況下的
- ,完美,調用到Web服務進行。這裏沒什麼可擔心的。
- 我斷開我的手機從WiFi並再次運行應用程序,我期望警報來告訴我,它沒有連接,但然後我看到在我的應用程序旋轉的UI活動指示器,這意味着該應用程序檢測到連接某種形式,並試圖連接到我的網絡服務。但是這絕不會發生,我知道當我進入settings-> general-> usage-> cellular usage時,它正在檢測蜂窩3G,並將統計重置爲0.一段時間後,我可以看到數據正在發送和接收。
- 我轉到settings-> general-> cellular->關閉3g,運行該應用程序,現在它顯示沒有連接的警報。
我知道很多人都有數據包,並且還我已經看到應用程序打市場與我所提到的可達性的水平,我只是覺得這可能在我剛纔解釋的情況得到改善。
我有一個3G連接,但我不知道
[Reachability reachabilityWithHostname:@"www.google.com"];
如何被ping通,或許它不是?
雖然我做了我的開關關閉的wifi,打開Safari瀏覽器,它的工作方式,充分顯示了其裝載了好一陣子,然後只是說,Safari瀏覽器無法打開......
這只是一些無法完成?
最後,我甚至在github頁面上看到了Tony Million提供的示例,在我的手機上運行時,儘管無線網關閉,但我沒有數據包,但它顯示可達。
我看了一些關於流量回答的堆棧,用戶詢問了有關互聯網連接的問題,但大多數答案都是圍繞「類型」wifi,wwan等旋轉,而不是檢測它是否是有效的Internet連接而不是連接到一個網絡。
謝謝你的時間。
必須有一些與你沒有一個數據計劃......您是否嘗試過在手機上有一個數據計劃,並打開飛行模式,並嘗試連接?然後會發生什麼? –
現在,如果我打開飛行模式,它會說沒有連接。沒事兒。但是我說的是沒有在世界這個地方並不罕見的數據。 當用戶沒有連接時,它不會是好的體驗,它表明只有當他們沒有加載5分鐘後,他們纔會加載失望。 我不知道3g和運營商是如何工作的,也許運營商只是限制了一個不購買數據計劃的人的帶寬量,因此一個連接被檢測到足以ping通谷歌,但還不足以做其他任何事情? –
@ShawnFrank你找到了你的問題的答案? –