2013-07-22 45 views
4

我正在開發一個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連接而不是連接到一個網絡。

謝謝你的時間。

+0

必須有一些與你沒有一個數據計劃......您是否嘗試過在手機上有一個數據計劃,並打開飛行模式,並嘗試連接?然後會發生什麼? –

+0

現在,如果我打開飛行模式,它會說沒有連接。沒事兒。但是我說的是沒有在世界這個地方並不罕見的數據。 當用戶沒有連接時,它不會是好的體驗,它表明只有當他們沒有加載5分鐘後,他們纔會加載失望。 我不知道3g和運營商是如何工作的,也許運營商只是限制了一個不購買數據計劃的人的帶寬量,因此一個連接被檢測到足以ping通谷歌,但還不足以做其他任何事情? –

+0

@ShawnFrank你找到了你的問題的答案? –

回答

2

經過幾天的研究,我發現了一個對我有用的解決方案,希望有人在未來可能會發現它有用。

我使用上面的可達性代碼創建了一個singleton類,以便我可以使用它並在每次輕鬆進行Web調用時檢查它。雖然這並沒有解決我之前提到的問題,但這是第一次檢查。

然後我說幹就幹,只是做普通的東西來從URL中獲取數據

NSdata * data [NSData dataWithContentsOfURL:myurlhere]; 
if([data length] == 0) 
{ 
    show alert view here 
} 
else 
{ 
    doing stuff with the items in data 
} 

因此,使用可達性的組合(這並不總是在某些情況下,像我在哪裏工作蜂窩網絡使用3克或4g),並檢查下載的數據可以作爲應用程序的良好檢查點。

+0

經過數小時無法拉扯我的頭髮,看到當我的手機連接到無線wifi AP時,蘋果原始可達性如何檢測到「有互聯網連接」,我也選擇了這種(明顯的)強力解決方案。你可能會過度殺傷,但是如果你在自己的服務器上爲它創建一個URL,那就是PURE BLISS,並且100%穩定。 – Isaac

2

首先,您需要在設置中檢查您的應用的蜂窩數據權限。

enter image description here