阐述
One Team,One Style。 新产品团队着实让我们费了老大劲,有些东西看似简单,但真正实现下来还是需要下一番功夫。此版本搞了一个阅读状态器,里面包含电池信息、网络类型等设备相关信息。网络类型蜂窝相关的如果不细拆分 (2G、3G、4G) 则感觉并不那么费劲,毕竟官方已经给出了相关Demo。不过,在产品团队要求下还是做精做细,故记录一下整个功能探坑历程。
记录
0 调研
Sche 1
官方提供的 Reachability(官方) 构件可以供我们使用。 但其只是草草的返回了蜂窝类型WWAN,至于内部具体的细分… 自己动手改造吧。
Sche 2
通过设备状态栏来获取相关设备信息,简单方便。不过… 心里有点不踏实。
1 实现
Sche 1 Reachability (改造版)
官方提供的 Reachability 构件,使用 SystemConfiguration.framework 库来获取当前设备的 SCNetworkReachabilityFlags 标识符,并对标识符进行匹配,从而得到当前设备的大致网络类型。(NotReachable、ReachableViaWiFi、ReachableViaWWAN)
在此基础上,我引入 CoreTelephony.framework 库来细分 ReachableViaWWAN 下的网络类型。
CoreTelephony 库下的 CTTelephonyNetworkInfo 类存储了当前设备蜂窝网络的详细信息。
主要改写代码片段:

Sche 2 状态栏 (仅适用导航栏未隐藏界面,已适配iPhoneX异形屏系列)
通过状态栏获取设备相应信息,不过由于普通屏和iPhoneX异形

本文记录了如何在iOS中获取详细的网络类型,包括2G、3G、4G和WIFI。通过改造官方的Reachability示例代码,结合CoreTelephony库,可以获取到更精确的网络信息。同时讨论了通过状态栏获取网络信息的方案,但最终选择了使用Reachability改造版,因为它更适合没有隐藏状态栏的界面,并且避免了实时监听网络切换的复杂性。
最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



