详解IOS判断当前网络状态的三种方法
在项目中,为了好的用户体验,有些场景必须线判断网络状态,然后才能决定该干嘛。比如视频播放,需要线判断是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判断当前网络状态的资料请关注其它相关文章!
推荐阅读