首页 文章

iphone SDK检测Wifi和运营商网络

提问于
浏览
11

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

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

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

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

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

感谢你的帮助!

5 回答

  • 9

    该样本正是您所需要的 .

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

  • 13

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

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

  • 0

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

    所有你需要做的:

    • 检查测试地点的信号 .

    • 检查您在Safari中尝试访问的链接,以确保它不是您的应用程序有问题 .

    • 如果链接无法在safari上运行,请联系您的运营商支持(确保使用运营商网络)

  • 2

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

  • 3

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

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

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

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

相关问题