用戶在使用APP的過程中,網(wǎng)絡(luò)條件比較復(fù)雜恋捆,如WiFi照皆,4G,3G鸠信,2G纵寝;并且,當(dāng)前有三大運(yùn)營商星立,所提供的網(wǎng)絡(luò)制式不太相同。同時(shí)葬凳,用戶使用的場景也各不相同绰垂,比如室內(nèi),戶外火焰,電梯或者停車場等劲装。因?yàn)椴蛔鋈魏翁幚淼脑捄芸赡軙罎㈤W退,很影響用戶的使用昌简。所以對客戶端要求就比較高了占业,需要做容錯(cuò)處理,比如異常提示纯赎,超時(shí)處理谦疾,重連機(jī)制,以及緩存機(jī)制犬金。
1.異常處理
當(dāng)網(wǎng)絡(luò)異常時(shí)念恍,未正常收到服務(wù)端的數(shù)據(jù),需要做容錯(cuò)處理晚顷,不然很可能應(yīng)用會出現(xiàn)崩潰或閃退
2.超時(shí)處理
網(wǎng)絡(luò)加載需要時(shí)間峰伙,由于人類的心理反應(yīng),如果等待的過程中給用戶進(jìn)度條反饋或者loading该默,比頁面一片空白要好過很多瞳氓,因?yàn)橛脩粲衅诖繕?biāo)(是不是稍微跟產(chǎn)品掛鉤了)。如果服務(wù)端一直沒有返回栓袖,時(shí)間過長而沒有給用戶反饋的話匣摘,會把用戶的耐心磨完锅锨。調(diào)查顯示:用戶所能忍受的最佳響應(yīng)時(shí)間是2s,一般情況下超時(shí)時(shí)間設(shè)置為5 s,如果時(shí)間超出要給用戶一個(gè)反饋恋沃。
當(dāng)然了必搞,超時(shí)時(shí)間統(tǒng)一設(shè)置為T,這是不是太傻了 囊咏。如果當(dāng)前是2G網(wǎng)絡(luò)恕洲,超時(shí)時(shí)間設(shè)置為5s是不是稍微有點(diǎn)短了,如果當(dāng)前為4G網(wǎng)絡(luò)梅割,且網(wǎng)絡(luò)狀態(tài)良好霜第,超時(shí)時(shí)間設(shè)置為5s是不是過長了,所以是不是可以根據(jù)不同的網(wǎng)絡(luò)制式來設(shè)置超時(shí)時(shí)間呢
3.重連機(jī)制是否有重連機(jī)制户辞,需要根據(jù)具體需求來定泌类,比如聊天功能,網(wǎng)絡(luò)較差導(dǎo)致網(wǎng)絡(luò)斷開底燎,當(dāng)網(wǎng)絡(luò)連接后刃榨,一般情況下都需要重連機(jī)制,因?yàn)橛脩粼诹奶祉撁鏁r(shí)想收到及時(shí)的信息双仍。
4.緩存機(jī)制是否有緩存機(jī)制枢希,也需根據(jù)需求而定,比如資訊內(nèi)容類朱沃,并不是所有的都需要做緩存機(jī)制苞轿。就資訊類模塊而言,如果網(wǎng)絡(luò)不好或者斷開時(shí)逗物,頁面顯示的是之前加載過的內(nèi)容搬卒,用戶就可以瀏覽之前的動態(tài),而不是一直在等待翎卓。
怎么來模擬弱網(wǎng)環(huán)境呢
1. 使用代理服務(wù)器契邀,如Fiddler,Charles
charles中可在proxy->Throttle setting彈窗中設(shè)置,打開后如下圖:
使用Fiddler的用戶可以在Rules->Customize Rules修改代碼莲祸,在文件中搜索Simulate蹂安,可以看到如下代碼行:
英文的意思為:沒發(fā)送/接收1KB延時(shí)T,所以我們可以修改延時(shí)的時(shí)間锐帜,可以為固定值田盈,也可以為固定區(qū)間的隨機(jī)值,這樣比較貼近用戶真實(shí)使用的場景
oSession["request-trickle-delay"] = ""+randInt(100,300);
oSession["response-trickle-delay"] = ""+randInt(100,300);
2. 使用其他工具缴阎,Network Emulator for windows Toolkit
3. 部分Android用戶可在設(shè)置->運(yùn)營商網(wǎng)絡(luò)->網(wǎng)絡(luò)模式中設(shè)置2G允瞧,3G,4G
如果是IOS設(shè)備,可以直接在開發(fā)者模式-Networking-Network Link Conditioner,選擇網(wǎng)絡(luò)類型后并打開上方開關(guān)即可
下方是不同網(wǎng)絡(luò)環(huán)境下速度的圖片述暂,測試時(shí)可參照設(shè)置: