如何强制iOS应用程序使用3G而不是WiFi?

Mar*_*tos 4 messaging firewall wifi 3g ios

我想使用一种在3G上运行良好的消息传递协议,但不能在某些企业防火墙上使用.即使在WiFi网络可以访问的情况下,我的应用程序如何在无法通过WiFi连接时强制使用蜂窝网络?

编辑:在阅读了Reachability类的实现后,我仍然不确定这两者是否确实相互排斥.很可能通过发现两个接口gethostbyname(),我可能会尝试只看看出来的内容.

use*_*568 6

使用getifaddrs枚举网络接口.查找以"pdp"开头的ifa_name.这将是蜂窝接口(例如,pdp_ip0).测试(ifa_flags和IFF_UP)以确保接口已启动,并从ifa_addr获取IP地址.然后使用bind()将套接字绑定到该地址.

如果尚未启动,则不确定如何激活蜂窝接口.通常,我只是进行高级别的http呼叫以让iOS唤醒网络,但不确定在什么条件下,当wifi也可用时,蜂窝服务变为活动状态.我怀疑它通常是作为无线网络的后备.


Tom*_*m H 2

http://iphonedevsdk.com/discussion/comment/120957

从那条线索看来,这似乎是不可能的。您最好的选择可能是尝试使用该协议,如果不起作用,请说“请断开与 wifi 的连接并重试”之类的内容。

这个线程说了几乎同样的事情:

如何以编程方式在 iPhone 上启动 3G 连接?

您可以使用苹果编写的Reachability类来测试网络连接当前是否通过3G或WiFi,甚至检查网络上是否有特定资源可用。