最近我負責了一個網(wǎng)絡請求超時的反饋設計,借此機會我也順便通過此文記錄了一下整個思考過程,整理一下自己的思路。
當我們在使用APP的時候,偶爾會碰到網(wǎng)絡狀態(tài)不好的情況。那么對于網(wǎng)絡狀態(tài)不好的情況有哪些分類呢?和開發(fā)大致的討論了一下主要有下面幾種:
1、用戶所處環(huán)境網(wǎng)絡信號不好(用戶向服務器請求超時)
2、服務器沒有正常接收請求或沒有回復
3、手機停機
4、手機沒開wifi或則流量等
這幾種狀態(tài),在沒有網(wǎng)絡時,對于開發(fā)而言可能在處理相關情況的時候,判定條件會有所不同,但對于用戶而言,其實也就是一種情況——沒網(wǎng)。
如果恰好用戶正在買東西,都要下單了,結果網(wǎng)絡中斷了一會會。這時候一個良好的反饋設計將發(fā)揮良好的作用。比如像沒怎么考慮這方面設計的APP,可能直接反饋一個空白頁,用戶只能退回到上一步,如圖:

但是如果一個設計良好的APP將已下面的方式展示:

對比一下,下面一種設計可以讓用戶在當前頁面進行重試刷新,避免了用戶重復操作之前的步驟。
而且如果再加上一個好的設計,可以起到彩蛋的作用,就像挺多APP在設計下拉刷新時的彩蛋,給用戶帶來一些驚喜。想象一下用戶本可能因為網(wǎng)絡的問題十分郁悶,彈出來一個俏皮的頁面是能夠緩解用戶的不滿的情緒。
所以思考了以上,我設計了如下這個界面(產(chǎn)品是關于汽車后市場的):

通過一句詼諧的話,不僅貼合我們產(chǎn)品本身(關于車的),又能比較好的描述了網(wǎng)絡不好這個情況。
之后在與開發(fā)PK的時候,我提到一點能否讓所有的網(wǎng)絡連接失敗的情況都跳轉這個頁面,得到的答復是這樣做容易造成多次請求,導致生成過多的請求超時頁面,引起APP崩潰。更好的解決方式是將每一個需要請求服務器獲取數(shù)據(jù)的界面都進行修改,單獨顯示。為了保證開發(fā)的進度,我暫時放棄了一部分的分支頁面的修改,僅讓開發(fā)先改主要流程的頁面。
當然做到這一步其實還是思考的比較簡單的,上面那種設計只是更加適合于要跳轉其他頁面的情況,還有一種是當前頁面請求服務器,比如下面這種情況:

如果點擊保存,網(wǎng)絡請求超時,這時候彈出另一個頁面就遮擋住了之前的信息,對于用戶是一個不好的體驗,這種情況下更適合采用上圖返還一個toast提示,然后用戶可以很快捷高效的進行再一次的保存操作。
當然這些僅僅是針對于我們這個電商產(chǎn)品,不同的產(chǎn)品,面對的也是不同的情況。
比如對于新聞類的、咨詢類的,這類APP一般都會有緩存,比如緩存好一個列表頁,下一次進入APP即使沒有網(wǎng)絡,也不會碰到什么內(nèi)容都沒有的情況而是加載之前緩存的列表。以及之前閱讀的文章也會緩存下來,下次再閱讀不需要再次請求服務器。再舉一個例子就是我們大家都很熟悉的微信朋友圈,沒有網(wǎng)絡的情況下也是可以查看之前加載過的內(nèi)容。如果特意去查看一下微信占用的空間,你會發(fā)現(xiàn)緩存占了很大的一塊,這里面就包括朋友圈內(nèi)曾經(jīng)加載過的內(nèi)容以及圖片等。這類產(chǎn)品在出現(xiàn)網(wǎng)絡請求超時的情況就不需要跳轉另一個頁面,多此一舉還影響用戶體驗。而且說白了像跳轉另一個頁面這種處理方式是一種簡單粗暴的方法。這里可以順便引用一句話叫l(wèi)ess is more,做的越少動靜越小,對用戶的體驗影響越小越好。這樣對于用戶也是一種心理暗示——這都不是事,不要慌。所以最好的做法是能讓用戶在出現(xiàn)異常情況下可以很輕易的再次重試,使得用戶能夠淡化對于異常情況的敏感以及反應過激。