簡體   English   中英

Android-如何在WiFi可用時保持3G連接

[英]Android - How to maintain 3g connection when wifi available

我的應用程序通過與服務器的持久連接進行連接。 如果設備當前正在使用3G,它將連接3g以上。
問題是,如果它使用3G連接並移入wifi,則連接斷開。 如何防止其斷開連接?

聽起來好像服務器無法容納客戶端無縫切換到另一個IP地址,或者服務器正在使用諸如保持活動數據包之類的東西來維持連接狀態,並且當3G連接斷開時,它將斷開您的會話。

這可能不是您可以控制的。 從Android的角度來看-該設備會根據用戶的喜好選擇WiFi,而您也可能對此沒有任何直接控制權。

簡而言之-如果您無法修改或重新配置通信協議以允許客戶端IP即時更改,那么您無法使用Android來緩解此問題。

所有移動設備,以及程度較小的台式機/筆記本電腦,都將在某個時候更改其面向公眾的IP地址,因此對我來說,這聽起來像是服務器或協議設計中的錯誤或疏忽。


編輯:

為了回應您的評論,並出於UX的利益,您應該非常謹慎地尋找一種方法,以在用戶請求其使用WiFi時強制將您的應用程序(可能甚至整個設備)保留在3G上。

多數人已將數據計划限制在其設備上,如果他們認為自己正在使用WiFi(這很可能是免費的,或者至少沒有額外費用),但實際上您強迫他們的設備繼續使用時,可能不會感到非常滿意而是使用非常昂貴的3G數據。

當任何方法可能會積極地繞過Android環境為您提供的合理限制,因此在安裝時可能不會被標記為“需要您付費的服務”時,這一點尤其重要。


編輯2:

因此,也許有一種方法可以實現,但是它依賴於不受支持的私有Android API,這些API可能隨時更改-通常適用免責聲明。

在這里查看他們訪問ConnectivityManager對象的位置,以允許您啟用移動數據。

此方法確實需要您根據Android源代碼樹進行構建,並使用帶有“ system”的共享用戶ID,因此可能合適也可能不合適,但是這些API是私有的(因為應用程序不應在沒有用戶的情況下執行此操作動作),但可能會對您有所幫助。

這就是Android的工作方式。 您的應用程序不應該維護持久連接,而應僅在需要時打開連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM