我可以在任何情况下阻止 iPhone 使用 3G 吗?

Posted

技术标签:

【中文标题】我可以在任何情况下阻止 iPhone 使用 3G 吗?【英文标题】:Can I prevent iPhone from using 3G under any circumstances? 【发布时间】:2011-03-02 16:36:08 【问题描述】:

我正在编写一个与旅行指南相关的应用程序,它可能会在海外下载大型数据库 (60meg),我可以通过可访问性代码判断何时可以通过 wifi 或 3g 访问主机但我担心如果由于某种原因wifi 连接中断一分钟左右,因为某些 DSL 连接有时可能会发生,iphone 会透明地切换到 3G,并且没有意识到我可能会因海外数据费用而为某人的电话费付出代价!

所以我想知道是否有人有任何经验,如果 wifi 连接中断(wifi 仍然可以工作,但它与网络的连接已断开),可达性代码会报告 ReachableViaWWAN 吗?所以我可以等到我的下载代码返回,检查主机当前是如何访问的,如果它是通过 3g 我可以中止吗?

是否可以选择我只能使用 aka 3g 或 wifi 的连接类型?

【问题讨论】:

很高兴看到一个开发人员关心不让他的用户搞砸。投赞成票。 如果您确实可以控制要使用的网络,或许可以将其设为用户可配置的设置。有些人可能不介意在需要时回退到 3G(例如,他们有新的 2GB 计划并且不介意下载 60MB)。 它旨在供用户配置,但如果他们说“没有 3g 下载”,我必须有某种方法来实现它。 【参考方案1】:

如果您查看可达性示例,在Reachability.h 中,有一个常量定义为“kReachabilityChangedNotification”。如果您要求收到更改通知(假设这听起来确实如此),您可以在连接下降到 3G 时停止连接。

【讨论】:

是的,通过阅读它,这看起来是唯一的方法。我猜只是进行大量调试来测试它的工作原理。【参考方案2】:

在设置->常规->网络下有“数据漫游”。这允许您在国际旅行时关闭漫游到其他数据网络。用户在旅行时已经可以选择是否允许昂贵的 3G 连接。

【讨论】:

啊,好吧,这可能很方便。 你打赌,因为我在边境附近,所以我总是把它关掉【参考方案3】:

是的,在设置->通用->网络下,你可以关闭3G。但 iPhone 仍将使用非 3G 蜂窝网络。

另外,当我出国旅行时,我将 iPhone 设为飞行模式,然后手动打开 wi-fi。

【讨论】:

我认为 OP 是在询问他们是否可以像 Skype 应用程序那样以编程方式从应用程序内禁止 3G 数据。 好的,不清楚,但在二读时我认为你是对的。 是的,但是谢谢你,我不知道你可以在飞行模式下打开 wifi。【参考方案4】:

没有; Unix 风格的 IP 不能那样工作。使用可达性代码会做大部分正确的事情,但仍有可能在处理通知之前通过 3G 发送一些数据包。

可以假设不关闭“数据漫游”的用户会很快关闭。另一方面,许多用户不会有无限的互联网计划。

一种选择是显示类似“未通过 Wi-Fi 连接,您想通过手机网络下载大量数据吗?您可能需要付费”之类的内容。并将其存储在设置中。

【讨论】:

仅供参考,AT&T 正在转向有限的数据计划,如果您每月保持在 2G 以下,这些计划会更便宜(我自己从来没有接近过)。目前无限制帐户,但新帐户将有 1G 或 2G 限制,之后我认为 10 美元/G 和当月的费用上限。

以上是关于我可以在任何情况下阻止 iPhone 使用 3G 吗?的主要内容,如果未能解决你的问题,请参考以下文章

IPHONE:我可以在没有互联网的情况下使用 GPS 来获取当前的纬度和经度

从 WiFi 切换到 3G 时出现网络错误

iPhone 应用程序仅在 3G 上的发布模式下崩溃

在 iPhone 上检测 2G 和 3G

区分 iPhone 3G 和 iPhone 3GS

iPhone 3G、3GS 和 4 上音频框架的差异