繁体   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