我想使用一种可以在 3G 上正常工作但不能在某些公司防火墙上工作的消息传递协议(protocol)。即使在 WiFi 网络可访问的情况下,我的应用程序如何在无法通过 WiFi 连接时强制使用蜂窝网络?

编辑: 在阅读了 Reachability 类的实现之后,我仍然不确定这两者是否确实是互斥的。很有可能通过 gethostbyname() 发现这两个接口(interface),我可能会尝试看看会出现什么。

最佳答案

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

如果蜂窝接口(interface)尚未启动,不确定如何激活它。通常,我只是进行高级 http 调用来让 iOS 唤醒网络,但不确定在什么条件下当 wifi 也可用时蜂窝服务会变为事件状态。我怀疑它通常是作为 wifi 的后备。

关于ios - 如何强制 iOS 应用程序使用 3G 而不是 WiFi?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12925724/

10-13 07:41