2013-04-22 227 views
3

我想找出一種方法來做一個AIR for iOS應用程序的互聯網連接檢查。在此之前,我使用了一個URLMonitor(針對我的判斷),每30秒檢查一次Google。我不喜歡把這個負載放到谷歌上,他們也沒有;今天早上,我們的網絡被簡單地從測試應用程序中標記爲可能的DDoS攻擊者。所以我不得不禁用這種類型的檢查並繼續前進。檢測互聯網連接

我曾考慮過使用Adobe的NetworkInfo ANE,但這在確定互聯網連接方面存在其自身問題。我能想到的唯一方法是檢查接口「en0」和「pdpxx」(分別對應於WiFi和Cellular接口)並檢查它們的IP以確保它們不在192.168.xx,10.10.xx中,或127.0.xx範圍。但是,我不完全確定這些是唯一的靜態路由器/本地主機IP,並且總有可能網絡接口名稱將在未來發生變化,這將導致此顯示器無用。 IPv6的問題也可能引發這種方法的問題。

是否有另一種方法來檢查用戶是否連接到互聯網?我搜索了多次,似乎這是唯一的兩種方法來檢查。如果是這樣的話,最好的檢查方法是什麼?

+0

一個簡單的方法是輪詢實際的服務器。當輪詢請求失敗時,請設置一個標誌來指示用戶處於脫機狀態。脫機時,使用緩存數據**和**以較低的頻率(即:每隔30秒)輪詢服務器。當輪詢請求成功時,您可以以更快的頻率恢復輪詢並使用實時數據。 – 2013-04-28 18:46:52

回答

0

我很驚訝你被標記爲DDoS攻擊者,你確定發生了什麼?

在任何情況下,如果您不喜歡將負載放到其他人的服務器上,那麼創建您自己的服務器,只需使用URLMonitor的基本設置即可。你不必在URLMonitor中使用谷歌的URL,你可以傳遞給它另一個URLRequest,它可以指向你自己的服務器。

monitor = new URLMonitor(new URLRequest("http://www.you-own-server.com")); 

如果您決定要在應用程序和服務器之間傳遞更多數據,這可能也很有用。這是你的服務器,所以可以做你想要的。

我不認爲有任何其他方式來檢查用戶是否連接到互聯網。說實話,我不明白爲什麼會有。檢查用戶界面/ wan0等......可能會是可能的,但你需要另一個程序,可能是一個簡單的python或C++程序,Air可以用它來檢查這些事情,但這聽起來很漫長。

+0

這不是一個選項。客戶預計該應用的80k活躍用戶。他們沒有處理這種負載的基礎設施。我們正在使用他們的服務器進行各種數據輪詢,但是在我們進行輪詢之前我們需要知道是否應該使用緩存數據或輪詢服務器,並且他們無法每隔30秒處理如此多的頁面點擊次數。 – 2013-04-22 21:31:05

+0

是的,我可以使用接口(通過Adobe構建的本地擴展)。但正如我在我的問題中所描述的那樣,存在靈活性問題。不過,這可能是最好的選擇。我做了一些挖掘我們的路由器,並確認唯一主要的Google ping是來自我的測試設備,所以它肯定讓我們被標記。 – 2013-04-22 21:32:05

+0

我明白了。我不認爲客戶可以期望擁有8萬用戶,而不需要擁有某種基礎設施。不幸的是,作爲開發者,你處於一個尷尬的境地。你的網絡被暫停或任何事情?它可能是一些來自ISP的自動響應或其他?請記住,幾乎所有使用過URLMonitor的人都在使用google作爲測試。它當然可以處理另一個80k用戶ping它的服務器,所以如果客戶端不願意實現他們自己的服務器,我只會咬緊牙關並使用Google服務器。 – 2013-04-22 21:48:42