社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
One Team,One Style。 新产品团队着实让我们费了老大劲,有些东西看似简单,但真正实现下来还是需要下一番功夫。此版本搞了一个阅读状态器,里面包含电池信息、网络类型等设备相关信息。网络类型蜂窝相关的如果不细拆分 (2G、3G、4G) 则感觉并不那么费劲,毕竟官方已经给出了相关Demo。不过,在产品团队要求下还是做精做细,故记录一下整个功能探坑历程。
Sche 1
官方提供的 Reachability(官方) 构件可以供我们使用。 但其只是草草的返回了蜂窝类型WWAN,至于内部具体的细分… 自己动手改造吧。
Sche 2
通过设备状态栏来获取相关设备信息,简单方便。不过… 心里有点不踏实。
Sche 1 Reachability (改造版)
官方提供的 Reachability 构件,使用 SystemConfiguration.framework 库来获取当前设备的 SCNetworkReachabilityFlags 标识符,并对标识符进行匹配,从而得到当前设备的大致网络类型。(NotReachable、ReachableViaWiFi、ReachableViaWWAN)
在此基础上,我引入 CoreTelephony.framework 库来细分 ReachableViaWWAN 下的网络类型。
CoreTelephony 库下的 CTTelephonyNetworkInfo 类存储了当前设备蜂窝网络的详细信息。
主要改写代码片段:
Sche 2 状态栏 (仅适用导航栏未隐藏界面,已适配iPhoneX异形屏系列)
通过状态栏获取设备相应信息,不过由于普通屏和iPhoneX异形屏状态栏层级不一致,故所承载网络信息View也不一致,分开处理。
核心代码:
选择 Sche 1。一方面,由于现有产品在使用网络类型的界面是不包含状态栏;另外一方面,采用第二种方式需要主动监听网络的切换,感觉工时有点长。
获取运营商名称
1. https://developer.apple.com/library/archive/samplecode/Reachability/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007324
2. https://www.jianshu.com/p/1b0901d0902b
3. https://www.jianshu.com/p/5c2247aa873a
4. https://www.jianshu.com/p/58021435ab67
5. https://www.cnblogs.com/xiaohuzi1990/p/4341655.html
6. https://blog.csdn.net/txz_gray/article/details/53216477
7. https://www.jianshu.com/p/7b98fb9dad45
8. https://www.jianshu.com/p/015635865480
9. http://ios.tedu.cn/data/288396.html
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!