12

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

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

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

4

4 回答 4

5

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

于 2010-06-11T14:17:05.183 回答
1

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

于 2010-06-11T14:17:30.557 回答
0

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

或者,当我出国旅行时,我将 iPhone 设为飞行模式,然后手动打开 Wi-Fi。

于 2010-06-11T14:10:29.063 回答
0

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

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

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

于 2010-06-11T19:51:54.937 回答