背景:
當網(wǎng)絡不穩(wěn)定或者服務端接口不穩(wěn)定時, APP 發(fā)起業(yè)務接口請求數(shù)據(jù), APP 端 會提示出底層的異常錯誤信息展示到界面上,對用戶來說不太友好.
前因后果
1 一開始, APP 端對所有的 網(wǎng)絡異常信息都統(tǒng)一 做 過濾和轉(zhuǎn)義 , 輸出了用戶看得懂的異常提示文案.
2 后面,服務端人員說, 不要寫死錯誤異常提示文案,根據(jù)后端輸出的異常是什么,就展示什么..... (方便后端診斷問題)
3. 所以那么問題來了,一旦APP 端全量 放開所有的網(wǎng)絡錯誤轉(zhuǎn)義,就會導致 網(wǎng)絡鏈路上的所有異常錯誤都原文展示出來 (就是用戶看不懂的底層錯誤信息)
比如下面的網(wǎng)絡異常提示:
因此: APP 端需要 做一個網(wǎng)絡異常的捕獲機制方案, 區(qū)分對待 不同鏈路的異常提示.
完整的網(wǎng)絡請求 需要經(jīng)過的網(wǎng)絡鏈路:
APP端 (物理層) —> 鏈路層 —> 網(wǎng)絡層 —>傳輸層 —>會話層(網(wǎng)關(guān)層) —> 服務端應用層(超時等)
網(wǎng)絡層面的異常的原因有很多:
比如,用戶自身手機信號不好,
手機飛行模式,
網(wǎng)絡流量欠費,
或者WIFI 信號差,
還有就是 WIFI 連上了,但是外部網(wǎng)絡中斷等,
甚至是 網(wǎng)關(guān)層攔截,或者認證失敗等,這些都不是服務端能夠控制輸出的
所以: 網(wǎng)絡鏈路上中間出現(xiàn)的異常信息,是不受 服務端控制的, 需要APP 端接收之后在做轉(zhuǎn)義輸出
因此具體 方案如下:
所以: 最終實現(xiàn)的網(wǎng)絡異常 轉(zhuǎn)義提示 效果如下:
(全局網(wǎng)絡異常 統(tǒng)一轉(zhuǎn)義 提示: 網(wǎng)絡異常哦,請檢查網(wǎng)絡,或者稍后重試)