iphone SDK检测Wifi和运营商网络
-
06-07-2019 - |
题
我的应用程序访问互联网,我只想检测是否有通过 wifi 或运营商数据网络的连接
苹果为“可达性”做了一个例子
https://developer.apple.com/iphone/library/samplecode/Reachability/
我认为它只检测wifi而不是运营商网络
谁能告诉我,最好做什么来检测是否有连接(任何类型的连接)
感谢你的帮助!
解决方案
该样本正是您所需要的。
看看Reachability.m。它会告诉你是否有任何联系,然后告诉你你有什么样的联系。
其他提示
如果您只想检测是否已连接,以及连接时使用的连接类型,则可访问性示例可能过度。实际上,该示例还包含显示如何设置和使用回调的代码,以便通知您状态更改。
对于一段源代码,告诉您确切的连接是否已连接,以及您正在使用的连接类型,您可能需要查看我对类似问题的回答,发布此处。
一旦您向任何网络资源发出请求,iPhone 就会使用它找到的任何连接,它会使用 wifi(优先级更高),如果 wifi 未连接,它会使用运营商网络。没有任何代码设置会阻止运营商网络。
你所要做的就是:
- 检查测试地点的信号。
- 检查您在 Safari 上尝试访问的链接,以确保不是您的应用程序出现问题。
- 如果链接在 safari 上不起作用(确保使用运营商网络),请联系您的运营商支持人员
这些技术很有用,但请记住,设备的Internet路径可能包含几种不同类型的连接。例如,iPhone或iPod touch可能正在使用WiFi连接到移动热点,而移动热点又拥有自己的3G无线连接。因此,假设WiFi连接的存在意味着比3G更高的带宽是不安全的。
可达性(Apple的示例代码和其他人的类似代码,以及底层的SCNetworkReachability将告诉您无法访问互联网,或者您将通过WiFi访问互联网,或者您将通过移动设备访问互联网数据。
如果您同时拥有WiFi和移动数据,它会告诉您“WiFi”。当您拥有WiFi时,无法确定移动数据是否可用。 (当没有WiFi时,您可以很容易地发现移动数据可用)。您无法确定是否已打开飞行模式(这与WiFi和移动数据关闭不同)。
WiFi可用并不保证下载将使用WiFi而不是移动数据。您可以在家中开始下载,一分钟后离开,WiFi消失,iOS将很乐意继续通过3G下载。您可以在下载呼叫中设置一个标志以禁止3G。错误代码将是-1009 =没有互联网访问,没有提到3G将可用。
使用CTTelephonyNetworkInfo,您可以发现您所在的设备可能拥有移动数据(不是没有移动数据的iPod Touch或iPad,并且设备中有SIM卡)。