iphone SDK检测Wifi和运营商网络

时间:2009-10-26 14:32:13

标签: iphone networking wifi detect

我的应用程序访问互联网,我只想通过wifi或运营商数据网络检测是否存在连接

苹果为“可达性”做了一个例子

https://developer.apple.com/iphone/library/samplecode/Reachability/

我认为它只是检测到wifi而不是运营商网络

任何人都可以告诉我,最好是检测是否存在连接(任何类型的连接)

感谢你的帮助!

5 个答案:

答案 0 :(得分:13)

该样本正是您所需要的。

看看Reachability.m。它会告诉你是否有任何联系,然后告诉你你有什么样的联系。

答案 1 :(得分:9)

如果您只想检测是否已连接,以及连接时使用的连接类型,则可访问性示例可能过度。实际上,该示例还包含显示如何设置和使用回调的代码,以便通知您状态更改。

对于一段源代码,告诉您确切的连接与否,以及您正在使用的连接类型,您可能需要查看我对here发布的类似问题的回答。

答案 2 :(得分:3)

一旦您向任何网络资源发出请求,iPhone就会使用它找到的任何连接,它使用wifi(作为更高的优先级),如果没有连接wifi,则使用运营商网络。 没有任何代码设置可以阻止运营商网络。

所有你需要做的:

  • 检查测试地点的信号。
  • 检查您在Safari中尝试访问的链接,以确保其中的应用无法解决问题。
  • 如果链接无法使用safari(确保使用运营商网络),请联系您的运营商支持

答案 3 :(得分:2)

这些技术很有用,但请记住,设备到Internet的路径可能包含几种不同类型的连接。例如,iPhone或iPod touch可能正在使用WiFi连接到移动热点,而移动热点又拥有自己的3G无线连接。因此,假设WiFi连接的存在意味着比3G更高的带宽是不安全的。

答案 4 :(得分:0)

可达性(Apple的示例代码和其他人的类似代码,以及底层的SCNetworkReachability将告诉您无法访问互联网,或者您将通过WiFi访问互联网,或者您将通过移动设备访问互联网数据。

如果您同时拥有WiFi和移动数据,它会告诉您“WiFi”。当您拥有WiFi时,无法确定移动数据是否可用。 (当没有WiFi时,您可以很容易地发现移动数据可用)。您无法确定是否已打开飞行模式(这与WiFi和移动数据关闭不同)。

WiFi可用并不保证下载将使用WiFi而不是移动数据。您可以在家中开始下载,一分钟后离开,WiFi消失,iOS将很乐意继续通过3G下载。您可以在下载呼叫中设置一个标志以禁止3G。错误代码将是-1009 =没有互联网访问,没有提到3G将可用。

使用CTTelephonyNetworkInfo,您可以发现您所在的设备可以拥有移动数据(不是没有移动数据的iPod Touch或iPad,并且设备中有SIM卡)。