page.title=通知
page.tags="notifications","design","L"
@jd:body
通知使用者 DevBytes:Android L 開發者預覽版中的通知開發人員文件
Android 4.4 及較早版本中的通知
影片
通知系統可以隨時知會使用者有關應用程式中的相關事件與及時事件,例如來自朋友的新聊天訊息。您可以將通知視為一種事件發生時警示使用者的新聞管道,或是在使用者沒注意時,記錄事件的日誌 — 並會視情況跨所有 Android 裝置且同步處理。
在 Android 5.0 中,通知會透過結構化、視覺化和功能化的效果接收重要更新:
注意:此版本 Android 中的通知設計和先前版本大相徑庭。 如需有關先前版本通知的設計資訊,請參閱 Android 4.4 及較早版本中的通知。
本節會重溫通知的基礎功能,以及其如何可在不同類型裝置上出現。
至少,所有通知都必須包含一個基礎版面配置,它包含:
針對先前平台版本,使用 {@link android.app.Notification.Builder Notification.Builder} 所建立的通知其外觀與運作方式和在 Android 5.0 中的一樣,只是在系統為您處理的方式上有一點樣式上的變更。 如需更多有關 Android 先前版本通知的詳細資訊,請參閱 Android 4.4 及較早版本中的通知。
您可以選擇到底要讓您應用程式的通知提供多詳細的資料。 通知可以顯示訊息的前幾行,也可以顯示較大的影像預覽。 此額外資訊可提供使用者更多內容,而且 — 在某些情況下 — 可讓使用者讀取完整訊息。 使用者可以捏合縮放或執行單手指滑動,在精簡的版面配置與擴充的版面配置間切換。 對於單一事件通知,Android 提供三個擴充版面配置範本 (文字、收件匣和影像),讓您可以在應用程式中使用。 以下的影像顯示單一事件通知在手持裝置 (左) 和穿戴裝置 (右) 上的外觀。
Android 支援可以在通知底端顯示的選用動作。透過動作,使用者可針對特定通知,從通知欄 (notification shade) 內處理最常見的工作,而無需開啟原始啟動的應用程式。這可加速互動,而且在配合滑動關閉 (swipe-to-dismiss) 時,有助使用者專注於高重要性的通知。
明智地決定要在通知中要納入多少個動作。 您納入的動作愈多,就會發現創造出愈複雜的通知。 請納入最緊迫重要且有意義的動作,限制自己儘可能使用最少數目的動作。
適合用於通知上的動作包含:
避免下列狀況:
您最多可以指定三個動作,每個動作都由一個動作圖示與名稱組成。 為簡單的基礎版面配置新增動作,可讓通知變得更具擴充性 -- 即使通知並未具備擴充的版面配置。由於動作只針對擴充的通知顯示,其他時候則隱藏,請確認使用者可從通知內呼叫的任何動作,也可以從關聯的應用程式中使用。
當高優先順序的通知到達 (如右) 時,會對使用者呈現很短的時間,且會顯示可能執行動作的擴充版面配置。
在這段時間之後,通知會退回至通知欄。 如果通知的優先順序被標記為「高」、「最大」或「全螢幕」,就會取得預告通知。
預告通知的好範例
針對由另一人傳送項目的通知 (如郵件或狀態更新),使用 {@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} 納入對方提供的影像。也將對方的資訊附加至通知的中繼資料中 (請參閱 {@link android.app.Notification#EXTRA_PEOPLE})。
您通知的主要圖示仍會顯示,這樣使用者就可以將主要圖示與狀態列中的可見圖示關聯起來。
當輕觸通知的本文時 (在動作按鈕之外),請將您的應用程式開啟至使用者可以檢視的地方,並根據通知中引用資料進行動作。 在多數情況下,這將是單一資料項目 (如訊息) 的詳細資料檢視,但如果通知被堆疊時,也可能會是概述檢視。 如果您的應用程式會將使用者帶到應用程式頂層之下的任何地方,則請將導覽過程插入應用程式的返回堆疊中,這可以讓使用者能夠按下系統的返回按鈕,返回至頂層。 如需詳細資訊,請見導覽設計模式中的「透過主螢幕視窗小工具和通知,導覽至您的應用程式」。
Android 支援對通知設定優先順序的旗標。此旗標可與其他通知旗標比較,影響通知顯示的位置,這有助於確保使用者一律會先看到最重要的通知。 在發佈通知時,您可以從以下優先順序等級選擇:
優先順序 |
使用 |
|
用於關鍵且緊急的通知,警示使用者注意此通知具時效性或必須在繼續特定工作前先解決的情況。 |
|
主要用於重要通訊,例如內容為使用者特別感興趣的郵件或聊天事件。高優先順序通知會觸發預告通知的顯示。 |
|
用於不屬於此處所述任何其他優先事項類型的所有通知。 |
|
用於您希望使用者能夠被告知,但不那麼緊急的通知。 低優先順序通知往往出現在清單的底端,因此適合於公共或間接的社交更新: 使用者已要求針對這類事件通知,但這些通知一律不會優先於緊急或直接通訊。 |
|
用於內容關聯或背景資訊,例如天氣資訊或內容關聯位置的資訊。最低優先順序通知不會出現在狀態列。 使用者會在展開通知欄時找到這些通知。 |
DEFAULT
、HIGH
和 MAX
為可中斷的優先順序等級,且有打斷使用者正進行動作的風險。
如要避免惹惱您應用程式的使用者,請將可中斷的優先順序保留給下列通知:
對使用者而言,設定為 LOW
和 MIN
的通知仍可能很有價值:
很多通知 -- 就算不是大多數 -- 並不需要使用者立即注意,或透過振動使用者的手腕加以提醒;但在使用者選擇查看通知時,這些通知仍會包含使用者覺得有價值的資訊。
LOW
和 MIN
優先順序通知的準則包含:
如果您的通知屬於某個預先定義的類別 (詳見下列說明),則請據以指派。 通知欄 (或任何其他通知接聽器) 等系統 UI 可能會使用此資訊,決定排名和篩選結果。
來電 (語音或視訊) 或類似的同步化通訊要求 |
|
傳入的直接訊息 (簡訊、即時訊息等) |
|
非同步大量郵件 (電子郵件) |
|
「行事曆」事件 |
|
宣傳或廣告 |
|
鬧鐘或計時器 |
|
長時間執行的背景操作其進度 |
|
社交網路或共用更新 |
|
背景操作或驗證狀態中的錯誤 |
|
播放的媒體傳輸控制 |
|
系統或裝置狀態更新。保留供系統使用。 |
|
執行背景服務的表示 |
|
針對單一件事的特定、及時建議。例如,新聞應用程式可能會想推薦其認為使用者下一步想要閱讀的新聞報導。 |
|
有關裝置或內容關聯狀態的進行中資訊 |
當您的應用程式嘗試傳送的通知,但已有類型相同的通知仍在等待中,則請針對應用程式將這些相同類型的通知合併為單一概述通知,而不要建立新物件。
概述通知會建立概述描述,並讓使用者瞭解特定種類的通知有多少數目正在等待處理。
不要這樣做
請這樣做
您可以使用擴充摘要版面配置,針對組成概述的個別通知,提供更多詳細資料。 這種方法可讓使用者更能感覺出哪些通知正處於等待處理,以及是否夠有趣,以便在關聯應用程式中詳細閱讀。
使用者應該總是能夠控制通知。讓使用者可以停用您應用程式的通知,或變更其警示屬性,如鬧鐘聲音或是否要使用振動,方法則是為您的應用程式設定新增通知設定項目。
使用者應該能瞄一下通知區域,即可以分辨哪些種類的通知目前正在等待處理。
請這樣做
查看 Android 應用程式圖示, Android 應用程式已為您的應用程式提供外觀易於分辨的通知圖示。
請這樣做
針對小圖示使用通知圖示樣式,針對您的動作列圖示使用 Material Light 動作列圖示樣式。
請這樣做
讓圖示保持看起來簡單的狀態,避免因過多的詳細資料造成使用者難以看清楚。
不要這樣做
將任何額外的 Alpha (變暗或淡出) 置入您的小圖示和動作圖示之中;它們的邊緣可能會有反鋸齒狀,但因為 Android 使用這些圖示做為遮罩 (也就是說,只使用 Alpha 通道),所以影像通常會以完全透明度來繪製。
不要這樣做
使用顏色以區分您與其他人的應用程式。通知圖示應該只是個白色圖示透明背景的背景影像。
許多 Android 裝置具備通知 LED,可用於當螢幕關閉時通知使用者有新事件。
優先順序等級為MAX
、HIGH
和 DEFAULT
的通知,
應該要讓 LED 亮起,而只有低優先順序 (LOW
和 MIN
) 的通知則不需要。
使用者對通知的控制應該延伸到 LED 上。當您使用 DEFAULT_LIGHTS,LED 會亮白色。 除非使用者已明確自訂通知,否則您的通知不應該使用其他顏色。
若要建立使用者喜歡的應用程式,精心設計您的通知非常重要。通知代表您應用程式的聲音,並有助於您應用程式的個性。 非必要或非重要的通知會讓使用者不高興,這會讓他們覺得應用程式想要吸引注目不擇手段,所以請明智地使用通知。
若要建立人們喜歡使用的應用程式,重要的是要體認到使用者的注意與專注是必須加以保護的資源。
雖然 Android 的通知系統已重新設計,儘量降低通知對使用者注意力的影響。但仍然必須警覺,通知會中斷使用者的工作流程。在規劃您的通知時,請先自問:通知是否足夠重要到可以合理地中斷使用者。
如果您不確定,則讓使用者可以使用您應用程式的通知設定,或調整通知優先順序旗標為 LOW
或 MIN
,避免使用者在從事其他工作時因此分心。
妥善規劃的應用程式只會在必要時才出現,但有幾個情況的確有益於應用程式透過無提示通知中斷使用者的行為。
通知主要還是使用於具時效性時間的事件,特別是當這些同步事件涉及其他人的時候。 比如說,傳入的聊天是通訊的即時、同步形式: 另一個使用者正主動等待您的回應。 「行事曆」事件是何時使用通知吸引使用者注意的另一個好例子,因為事件即將發生,而「行事曆」事件通常牽涉到其他人。
在許多其他情況下,通知並不適當:
通知可由狀態列上的圖示表示,並可以透過開啟通知匣來存取。
輕觸通知會開啟相關應用程式,顯示符合通知的詳細資料內容。對通知往左右滑動,可以將通知從通知匣中移除。
進行中通知可讓使用者得知在背景中正在進行程序的資訊。例如,音樂播放程式會在通知系統中宣告正在播放的曲目,除非使用者停止曲目,否則就會繼續宣告。 進行中通知也可以針對如下載檔案或編碼影片等耗時較長的工作,向使用者顯示目前進度。 使用者無法手動將進行中通知從通知匣移除。
在 Android 5.0 中,鎖定螢幕不會針對已過時的 {@link android.media.RemoteControlClient} 類別,顯示傳輸控制項。但鎖定螢幕「的確」會顯示通知,所以每個應用程式的播放通知,現在都已經是使用者從鎖定狀態控制播放的主要方法。 這個行為可讓應用程式進一步控制以何種方式顯示哪些按鈕,同時無論螢幕是否鎖定,都能為使用者提供一致性的體驗。
您的應用程式目前若不在畫面上,就不應建立對話或快顯通知。 對話或快顯通知只在使用者於您應用程式內採取動作時產生立即回應時才顯示。至於使用對話與快顯通知的進一步指引,請參閱確認和確認完成。
通知就是新聞,所以基本上是以逆時間順序顯示,同時會針對應用程式指定的通知優先順序,給與特殊考慮。
通知是鎖定螢幕的重要部分,並會在裝置重新顯示螢幕時明確作用。 鎖定螢幕上的空間有限,所以更重要的是辨別出最緊急或相關的通知。 基於這個理由,Android 針對通知提供了更複雜的排序演算法,並同時考慮:
要善用這種排序,請著重於您想要建立的使用者體驗,而非著眼於清單上的任何特定排名位置。
由於通知可見於鎖定螢幕上,因此使用者隱私是特別重要的考量。 通知通常包含敏感資訊,而且不一定要顯示給拿起裝置並打開顯示的任何人。
當設定安全鎖定螢幕時,使用者可以選擇隱藏來自安全鎖定螢幕的機密詳細資料。 在這種情況下,系統 UI 會考慮通知的「可見度」等級,判斷可以顯示何種內容。
如要控制可見度等級,可以呼叫
Notification.Builder.setVisibility()
,並指定下列值之一:
VISIBILITY_PUBLIC
。
顯示通知的完整內容。
如果未指定可見度,則這會是系統預設值。VISIBILITY_PRIVATE
。
在鎖定螢幕上,顯示這個通知存在的基本資訊,
包括通知圖示和發佈通知的應用程式。通知詳細資料的其他部分則不會顯示。
但請記住的下列幾點:
Notification.publicVersion
欄位中提供一個取代的「通知」物件。
VISIBILITY_PRIVATE
,但 publicVersion
仍包含像「3 個新訊息」等實用資訊,
但卻又不提供任何其他可用來識別的詳細資料。
Notification.VISIBILITY_SECRET
。僅顯示最起碼的資訊,
甚至連通知圖示都排除。預設情況下,通知和其動作會橋接至穿戴裝置。 開發人員可以控制哪些通知可從電話橋接至手錶上, 反之亦然。 開發人員還可以控制哪些動作可以橋接。如果您的 應用程式包含 無法以單一點選完成的動作, 請在您的穿戴通知上隱藏這些動作 ,或考慮將其連結至穿戴應用程式, 讓使用者可以在手錶上完成動作。
例如電話等已連線的裝置, 可以橋接通知至穿戴裝置,讓通知可以在該處顯示。同樣的,也可以橋接動作, 這樣使用者就可以直接從穿戴裝置對通知執行動作。
橋接
請勿橋接
有些動作只能在穿戴裝置上執行。這些動作包含: