我的应用程序访问互联网,我只想通过wifi或运营商数据网络检测是否存在连接
苹果为“可达性”做了一个例子https://developer.apple.com/iphone/library/samplecode/Reachability/
我认为它只是检测到wifi而不是运营商网络
任何人都可以告诉我,最好是检测是否存在连接(任何类型的连接)
感谢你的帮助!
答案 0 :(得分:13)
该样本正是您所需要的。
看看Reachability.m。它会告诉你是否有任何联系,然后告诉你你有什么样的联系。
答案 1 :(得分:9)
如果您只想检测是否已连接,以及连接时使用的连接类型,则可访问性示例可能过度。实际上,该示例还包含显示如何设置和使用回调的代码,以便通知您状态更改。
对于一段源代码,告诉您确切的连接与否,以及您正在使用的连接类型,您可能需要查看我对here发布的类似问题的回答。
答案 2 :(得分:3)
一旦您向任何网络资源发出请求,iPhone就会使用它找到的任何连接,它使用wifi(作为更高的优先级),如果没有连接wifi,则使用运营商网络。 没有任何代码设置可以阻止运营商网络。
所有你需要做的:
答案 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卡)。