本篇主要講解iOS開發(fā)中的網(wǎng)絡(luò)監(jiān)控

前言

在開發(fā)中,有時(shí)候我們需要獲取這些信息:

  • 手機(jī)是否聯(lián)網(wǎng)

  • 當(dāng)前網(wǎng)絡(luò)是WiFi還是蜂窩

那么我總結(jié)一下具體的使用場景有哪些?肯定有遺漏:

  1. 聊天列表,需要實(shí)時(shí)監(jiān)控當(dāng)前的網(wǎng)絡(luò)是不是可達(dá)的,如果不可達(dá),則出現(xiàn)不能聯(lián)網(wǎng)的提示

  2. 在線視屏播放,需要判斷當(dāng)前的網(wǎng)絡(luò)狀態(tài),如果不是WiFi,應(yīng)該給出流量播放的提示

  3. 對(duì)于比較重要的網(wǎng)絡(luò)請(qǐng)求,在請(qǐng)求出錯(cuò)的情況下,判斷網(wǎng)路狀態(tài),找出請(qǐng)求失敗原因。

  4. 可以把請(qǐng)求進(jìn)行緩存后,當(dāng)監(jiān)聽到網(wǎng)絡(luò)連接成功后發(fā)送。舉個(gè)例子,每次進(jìn)app都要把位置信息發(fā)給服務(wù)器,如果發(fā)送失敗后,發(fā)現(xiàn)是網(wǎng)絡(luò)不可達(dá)造成的失敗,那么可以把這個(gè)請(qǐng)求放入到一個(gè)隊(duì)列中,在網(wǎng)絡(luò)可達(dá)的時(shí)候,開啟隊(duì)列任務(wù)。

  5. 當(dāng)網(wǎng)絡(luò)狀態(tài)變化時(shí),實(shí)時(shí)的給用戶提示信息

  6. 獲取某個(gè)節(jié)點(diǎn)或地址是不是可達(dá)的

但是,極其不建議在發(fā)請(qǐng)求前,先檢測當(dāng)前的網(wǎng)絡(luò)是不是可達(dá)。因?yàn)槭謾C(jī)的網(wǎng)絡(luò)狀態(tài)是經(jīng)常變化的》

SCNetworkReachabilityFlags

SCNetworkReachabilityFlags是獲取網(wǎng)絡(luò)狀態(tài)最核心的東西。我們來看看它有哪些內(nèi)容:

作用

SCNetworkReachabilityFlags能夠判斷某個(gè)指定的網(wǎng)絡(luò)節(jié)點(diǎn)名稱或者地址是不是可達(dá)的,也能判斷該節(jié)點(diǎn)或地址是不是需要先建立連接,也可以判斷是不是需要用戶手動(dòng)去建立連接。

注意:這里所說的連接分為用編程手段連接和用手動(dòng)建立連接兩種

我們

網(wǎng)友評(píng)論