淺析Android 4.0的通知系統(tǒng)
通過(guò)手機(jī)的通知系統(tǒng),可以將應(yīng)用程序的一些重要消息告知給用戶。流暢、舒適、友好的應(yīng)用程序離不開(kāi)精心設(shè)計(jì)的消息提醒機(jī)制。但是并不是所有的通知都是用戶想看的,否則只會(huì)給用戶造成騷擾,所以要謹(jǐn)慎使用通知。
在對(duì)《Android Design》進(jìn)行翻譯時(shí)發(fā)現(xiàn):Android系統(tǒng)已經(jīng)提出了一些關(guān)于通知消息的設(shè)計(jì)建議,故在此分享給大家。
一、何時(shí)使用通知?
通知主要用于對(duì)時(shí)間敏感(Time Sensitive)的事件,尤其是涉及他人(Involve another person)的同步事件。例如下面的Gtalk和日歷發(fā)出的通知就是時(shí)間敏感,且與人相關(guān)的事件。

那么什么時(shí)候又不應(yīng)該使用通知呢?官方的建議是:
不直接針對(duì)用戶的,或不緊急的信息。例如SNS中與用戶沒(méi)有直接關(guān)系的新鮮事。Path可能就犯了這個(gè)錯(cuò)誤。
正顯示在當(dāng)前屏幕的信息也不必創(chuàng)建一個(gè)通知。即正在聊天的時(shí)候,就不必再創(chuàng)建關(guān)于聊天消息的通知了。
系統(tǒng)可以自己完成而無(wú)需用戶操作的簡(jiǎn)單動(dòng)作,例如保存、同步或者是更新應(yīng)用程序等。
如果發(fā)生錯(cuò)誤了,但是應(yīng)用程序可以快速自我恢復(fù),此時(shí)也不必用通知去打斷用戶,甚至都可以不用讓用戶知道這個(gè)錯(cuò)誤。
對(duì)于用戶不能手動(dòng)啟動(dòng)或停止的服務(wù),也不必使用通知。
不要為了讓用戶對(duì)你的品牌記憶深刻而創(chuàng)建多余的通知,否則只會(huì)讓用戶反感。想讓用戶對(duì)你的應(yīng)用程序保持注意力并且提供少量?jī)?nèi)容的最好方式是提供小部件(widget)給用戶,讓用戶可以將它放到首頁(yè)。
二、通知的設(shè)計(jì)指南
1. 使其私有化
其他用戶發(fā)過(guò)來(lái)的通知應(yīng)該在通知里包含用戶的頭像(Icon/Photo),還要顯示通知的標(biāo)題(Title)、消息內(nèi)容(Message)、時(shí)間戳(Timestamp),以及應(yīng)用程序的圖標(biāo)(Secondary Icon)。

2. 合并同類通知
如果一個(gè)應(yīng)用程序發(fā)出了多個(gè)相同類型的通知,而且這些通知都還沒(méi)被處理的話(被處理的通知會(huì)被移出通知抽屜),那么請(qǐng)將相同類型的通知合并為一個(gè)。
合并后的通知會(huì)有一個(gè)總結(jié)性的描述,并且能讓用戶知道一共合并了多少條通知(Number Pending)。

3. 對(duì)時(shí)間敏感事件的時(shí)間戳
默認(rèn)的系統(tǒng)通知會(huì)在通知右上角打上時(shí)間戳,如果你認(rèn)為顯示時(shí)間戳對(duì)你的通知是沒(méi)有意義的,那你可能就要重新考慮是否值得為這條消息創(chuàng)建一條通知了。如果這條通知確實(shí)足夠重要,再?zèng)Q定是否不顯示時(shí)間戳。
常見(jiàn)的需要顯示時(shí)間戳的通知是通訊通知,如Email、短信、聊天消息這種,用戶需要通過(guò)時(shí)間戳來(lái)理解消息的上下文。
4. 通知相關(guān)的導(dǎo)航機(jī)制
如果用戶點(diǎn)擊了一條通知,此時(shí)應(yīng)該將相關(guān)的應(yīng)用程序打開(kāi)到可以對(duì)通知中提到的內(nèi)容進(jìn)行操作的狀態(tài)。但如果用戶點(diǎn)擊了一個(gè)合并的通知,應(yīng)該去到列表頁(yè)面(內(nèi)容頁(yè)的上一層級(jí)),后面第三部分會(huì)詳細(xì)闡述。
5. 自我清理
有些通知會(huì)在某個(gè)時(shí)間點(diǎn)出現(xiàn)告知用戶一些相關(guān)的信息和提示,但是如果過(guò)了那個(gè)時(shí)間點(diǎn),這個(gè)通知可能對(duì)用戶來(lái)說(shuō)就不重要了,此時(shí)就應(yīng)該考慮自動(dòng)刪除這條通知。
同樣的,用戶查看過(guò)的聊天消息或郵件,也應(yīng)該讓用戶不必手動(dòng)操作就移除這些通知。
6. 為通知提供預(yù)覽
提供一段簡(jiǎn)短的文本作為通知的預(yù)覽可以讓用戶大致了解通知的內(nèi)容,從而幫助用戶決定是否立刻查看該通知。

7. 讓用戶決定是否顯示通知
用戶可能對(duì)頻繁出現(xiàn)的通知感到厭煩,所以應(yīng)該讓用戶決定是否顯示通知。因此,在應(yīng)用程序的設(shè)置中應(yīng)該讓用戶可以取消通知。
8. 使用不同的圖標(biāo)
為了讓用戶在通知欄看一眼就能知道是哪個(gè)應(yīng)用程序發(fā)出的通知,應(yīng)該采用有自己特色的圖標(biāo)。所以在設(shè)計(jì)應(yīng)用程序的圖標(biāo)的時(shí)候,應(yīng)該注意與其他Android應(yīng)用的通知圖標(biāo)有比較明顯的區(qū)別。
但需要注意的是不要用顏色來(lái)區(qū)分,因?yàn)橥ㄖ獔D標(biāo)通常都是黑白的。
#p#
三、通知的導(dǎo)航機(jī)制
1. 單條通知與合并通知
如果用戶點(diǎn)擊了一條通知,此時(shí)應(yīng)該將相關(guān)的應(yīng)用程序打開(kāi)到可以對(duì)通知中提到的內(nèi)容進(jìn)行操作的狀態(tài)。例如用戶收到一封新郵件的通知,用戶點(diǎn)開(kāi)該通知后應(yīng)該去到這封郵件的內(nèi)容頁(yè)。

因?yàn)橥愅ㄖ獣?huì)被合并,如果用戶點(diǎn)擊了一個(gè)合并的通知,應(yīng)該去到列表頁(yè)面(內(nèi)容頁(yè)的上一層級(jí))。在下面的例子中,用戶點(diǎn)開(kāi)一條合并的新郵件通知后,進(jìn)入了收件箱界面。

2. 間接通知
如果應(yīng)用程序需要同時(shí)展示多個(gè)事件的信息,可以使用一條通知將用戶指引到一個(gè)中間界面。這個(gè)界面會(huì)展示這些事件,并為用戶提供進(jìn)入應(yīng)用程序的入口。這種類型的通知被稱為間接通知。
例如一個(gè)用戶在Gmail中收到了Calendar發(fā)出的一條間接通知。點(diǎn)擊這條通知后打開(kāi)一個(gè)中間界面(calendar interstitial),這個(gè)界面下顯示了幾個(gè)事件的提醒,在這個(gè)界面點(diǎn)“返回”鍵會(huì)回到Gmail,但是如果用戶點(diǎn)擊了某個(gè)事件提醒,就會(huì)離開(kāi)這個(gè)中間界面并打開(kāi)Calendar應(yīng)用程序以顯示這個(gè)事件的詳細(xì)內(nèi)容。在這個(gè)事件的詳細(xì)內(nèi)容的界面下,點(diǎn)“向上”和“返回”都會(huì)去到Calendar應(yīng)用的首頁(yè)。

在間接通知的中間界面點(diǎn)“返回”會(huì)回到觸發(fā)該通知的界面,返回路徑中不會(huì)被插入其他界面。一旦用戶通過(guò)中間界面進(jìn)入了應(yīng)用程序,“向上”和“返回”的邏輯就與標(biāo)準(zhǔn)通知一樣了:在應(yīng)用程序之間進(jìn)行導(dǎo)航,而不會(huì)返回到中間界面。
關(guān)于間接通知的詳細(xì)內(nèi)容請(qǐng)查看百度MUX翻譯的《Android Design》的模式Patterns—-導(dǎo)航Navigation章節(jié)。
3. 彈出通知
彈出通知會(huì)繞過(guò)抽屜通知直接出現(xiàn)在用戶面前。一般情況下很少使用,只在需要及時(shí)地反饋并且必須打斷用戶的場(chǎng)合下才會(huì)使用。例如Talk應(yīng)用使用這種形式的通知來(lái)提醒用戶有好友邀請(qǐng)他加入視頻聊天,因?yàn)檫@個(gè)邀請(qǐng)會(huì)在幾秒后自動(dòng)失效。
對(duì)于導(dǎo)航行為,彈出通知嚴(yán)格遵循間接通知的中間界面的導(dǎo)航邏輯。點(diǎn)“返回”會(huì)關(guān)閉彈出通知。如果用戶從這條彈出通知進(jìn)入了發(fā)出通知的應(yīng)用程序,“向上”和“返回”的邏輯會(huì)與標(biāo)準(zhǔn)通知的邏輯保持一致,在應(yīng)用程序內(nèi)進(jìn)行導(dǎo)航。

關(guān)于間接通知的詳細(xì)內(nèi)容請(qǐng)查看百度MUX翻譯的《Android Design》的模式Patterns—-導(dǎo)航Navigation章節(jié)。
#p#
四、通知的相關(guān)交互
1. 通知抽屜
默認(rèn)情況下,待處理的通知是以圖標(biāo)形式顯示在狀態(tài)欄中,從屏幕上方向下滑即可打開(kāi)通知抽屜。

最近的通知排在最前面,點(diǎn)擊一條通知會(huì)將其應(yīng)用程序打開(kāi)到與這條通知相關(guān)的界面。

在一條通知上向左或向右橫劃即可移除該通知。

在Android 4.0的平板電腦中,通知欄則被集成到底部的系統(tǒng)欄里,在通知區(qū)域的任意位置點(diǎn)擊即可打開(kāi)通知抽屜。

2. 進(jìn)行中的通知
有一些通知是讓用戶了解后臺(tái)正在運(yùn)行的進(jìn)程。例如正在播放的音樂(lè)播放器、正在后臺(tái)運(yùn)行的省電程序、正在保護(hù)系統(tǒng)的安全軟件等。另外也可以對(duì)下載上傳、視頻編碼這種持續(xù)時(shí)間較長(zhǎng)的任務(wù)提供反饋。這種進(jìn)行中的通知是不可以被移除的。

3. Dialog和Toast用作反饋
如果某個(gè)應(yīng)用程序沒(méi)有在當(dāng)前屏幕運(yùn)行,它就不應(yīng)該彈出對(duì)話框(Dialog)和提示條(Toast)。對(duì)話框和提示條應(yīng)該是用戶在當(dāng)前應(yīng)用程序下執(zhí)行操作時(shí),用來(lái)提供即時(shí)的操作反饋的。比如對(duì)話框可以讓用戶知道某個(gè)操作的危險(xiǎn)后果,而提示條可以讓用戶知道某個(gè)操作已成功執(zhí)行。

五、總結(jié)
在Android平臺(tái)設(shè)計(jì)應(yīng)用程序的通知消息時(shí)應(yīng)該明確在哪些場(chǎng)景下使用通知;不同的場(chǎng)景顯示什么類型的通知。在設(shè)計(jì)的時(shí)候還要注意通知的私有化、導(dǎo)航邏輯、清理機(jī)制、同類通知的合并、圖標(biāo)的設(shè)計(jì)等。為避免對(duì)用戶造成騷擾,還應(yīng)該在應(yīng)用程序的設(shè)置中增加對(duì)是否顯示通知消息的設(shè)置。
從較早版本的Android系統(tǒng)開(kāi)始,就具備了比較成熟的通知系統(tǒng),新版iOS系統(tǒng)也參考了類似的設(shè)計(jì)。所以充分利用Android的通知系統(tǒng),一定可以讓用戶對(duì)你的應(yīng)用程序了如指掌。
另附上MUX翻譯的最新版《Android Design》,歡迎大家下載閱讀。
譯文:http://mux.baidu.com/img/97/AndroidDesign-BaiduMUX.pdf
原文:http://developer.android.com/design/
本文來(lái)源:http://mux.baidu.com/?p=3183