iOS 记录之 获取网络类型 (2G、3G、4G、WIFI) - Go语言中文社区

iOS 记录之 获取网络类型 (2G、3G、4G、WIFI)


阐述

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异形屏状态栏层级不一致,故所承载网络信息View也不一致,分开处理。

核心代码:

2 决定

选择 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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yanglei3kyou/article/details/94183612
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-05 17:55:37
  • 阅读 ( 1573 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢