欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解IOS判断当前网络状态的三种方法

程序员文章站 2022-04-25 14:14:29
在项目中,为了好的用户体验,有些场景必须线判断网络状态,然后才能决定该干嘛。比如视频播放,需要线判断是wifi还是4g,wifi直接播放,4g先提示用户。获取网络状态的方法大概有三种:1. reach...

在项目中,为了好的用户体验,有些场景必须线判断网络状态,然后才能决定该干嘛。比如视频播放,需要线判断是wifi还是4g,wifi直接播放,4g先提示用户。获取网络状态的方法大概有三种:

1. reachability

这是苹果的官方演示demo中使用到的方法,我们可以到苹果官方文档里下载demo(点击左上角download sample code 即可下载),然后把demo里的reachability.h和.m考到自己项目中,并在build phases 的 link binary 添加systemconfiguration.framework框架,然后在需要使用的地方导入reachability头文件

在 reachability头文件中我们可以看到无网络,wifi和蜂窝网三个网络状态的枚举值,如下:

(1)获取网络状态

在ios 7之前,当用户网络为蜂窝网络时,是没法判断3g、4g等网络类型的,ios 7 后是可以判断的

(2)当用户为手机自带网络时,判断具体网络类型

这时可以使用系统自带的api来判断是2g、3g还是4g,这就要使用到cttelephonynetworkinfo这类,记得在工程添加coretelephony.framework,并导入头文件

用此方法判断的蜂窝网络类型有如下类型:

ctradioaccesstechnologygprs         //介于2g和3g之间,也叫2.5g ,过度技术

ctradioaccesstechnologyedge         //edge为gprs到第三代移动通信的过渡,edge俗称2.75g

ctradioaccesstechnologywcdma

ctradioaccesstechnologyhsdpa            //亦称为3.5g(3?g)

ctradioaccesstechnologyhsupa            //3g到4g的过度技术

ctradioaccesstechnologycdma1x       //3g

ctradioaccesstechnologycdmaevdorev0    //3g标准

ctradioaccesstechnologycdmaevdoreva

ctradioaccesstechnologycdmaevdorevb

ctradioaccesstechnologyehrpd        //电信使用的一种3g到4g的演进技术, 3.75g

ctradioaccesstechnologylte          //接近4g

2. 通过系统statusbar判断

这种方法在iphone x 上可能引起奔溃,可能是苹果修改了statusbar的keypath,所以拿到的东西为nil,导致崩溃//获取当前网络状态  (iphone x 上可能引发崩溃)

3. 通过afnetworking

此方法可以写在appdelegate中,每当网络状态发生变化时,就可以发通知,实时监测网络变化,然后做相应的处理

以上就是详解ios判断当前网络状态的三种方法的详细内容,更多关于ios判断当前网络状态的资料请关注其它相关文章!