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

标签 ios wifi messaging firewall 3g

我想使用一种在 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/

相关文章:

javascript - 背景内容脚本消息 : message sent before content script is ready

java - 如何清除 Aeron 过期的存档和快照文件?

ios - 从 TableView Controller 引用特定的 TableView 单元格

c - 如何使用 C 在 Ubuntu 上获取 WIFI 参数(带宽、延迟)

ios - 通过 iPhone App 连接到特殊的 Wi-Fi 网络

linux - 主机 : Test connectivity to wifi network on different channel than ap interface

java - JMS 容错异步发布者

ios - 向自定义键盘添加建议

ios - NumberKeyPad 中的完成按钮导致 iOS 8 出现问题

ios - 关于可重用的 UITableViewCells 和委托(delegate),最佳实践是什么?