闡述
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