【问题标题】:Forcing a WWAN connection on iPhone, even when Wi-Fi is available强制在 iPhone 上建立 WWAN 连接,即使 Wi-Fi 可用
【发布时间】:2010-02-16 09:14:05
【问题描述】:

我需要在 iPhone 上通过 WWAN(即移动网络)建立网络连接,即使设备已连接到 Wi-Fi 网络,但我找不到这样做的方法。

我已尝试深入到套接字级别并遍历可用接口,但是当连接到 Wi-Fi 时,WWAN 接口 (pdp_ip0) 消失了。

解决方案必须是 App Store 安全的。

【问题讨论】:

  • 只是想知道,你为什么想去 WWAN?一般来说,Apple 有兴趣限制 WWAN 流量,所以如果他们不提供这样做的方法,我不会感到惊讶。
  • 对于应用程序需要连接的服务,这是一个不可协商的操作要求。要传输的数据量绝对是最小的——我们说的是最多几百字节。
  • 我唯一能想到的就是关闭 Wi-Fi 连接。不确定是否有 API。

标签: iphone networking sockets


【解决方案1】:

枚举网络接口,你会看到当你同时连接wifi和3g时,有2个本地IP地址不同。在发送数据之前,您可以通过在正确的接口上强制绑定套接字来使用一个与另一个。试图找到路由数据包的最佳接口的内核应该对您的选择感到满意。 免责声明:我没有尝试过,这只是一个建议。

【讨论】:

  • 我可以确认当蜂窝接口启动时这可以正常工作。我不确定天线尚未激活的情况。我在使用我的套接字之前使用更高级别的 http API 来唤醒网络,我无法控制使用什么接口。
【解决方案2】:

也许您可以使用Reachability 代码来确定是否启用了 Wi-Fi,触发UIAlertView 以警告用户退出应用程序,打开设置应用程序并手动关闭无线。绝对不理想。

【讨论】:

  • 是的 - 我一直在查看可达性代码。问题是,要求用户关闭 Wi-Fi 会让应用在 App Store 中获得大量 1 星评价。
  • 我听到了。希望你能找到答案——我自己对此很好奇。
  • 我看不到可达性代码如何让您确定是否启用了 Wi-Fi;仅当您可以使用它访问服务器时。但是对于地理定位,您只需要启用它,而不是实际使用它进行通信。有没有办法在手机上测试Wi-Fi的实际激活?
【解决方案3】:

没有支持的方法来执行此操作。您需要告诉用户关闭 WiFi 连接,因为“这是应用程序需要连接到的服务的不可协商的操作要求。”

在这种情况下,如果您清楚用户必须禁用 WiFi 的原因,用户不太可能会因为差评而杀死您。

-t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多