大眾對話

大眾對話計畫是為期數年的 Android 計畫,旨在改善手機系統中大眾對話。這項優先工作的基礎在於,與其他人的溝通和互動仍然是各客層的多數使用者最重視且最重要的功能領域。

我們在 Android 11 中導入了多項功能,以支援大眾對話計畫。

對話空間


對話空間是一種專屬通知區域,適用於人與人之間的即時對話。
圖 1:對話空間。

手持裝置時,通知欄上方會有一個獨立區段,只會包含與其他人的即時對話(例如通話和聊天訊息,包括群組通訊)。在許多手機上,這個空間中的通知的外觀和運作都與非對話通知有所不同:

  • 設計的不同,特別強調代表使用者與應用程式整合對話的顯示圖片。
  • 輕觸通知即可開啟應用程式中的對話 (如果對話先前以對話框形式顯示,則開啟對話框),接著輕觸插入點會展開通知欄中的新訊息,並附上完整的選項清單。
  • 提供對話專屬動作 (有些需要長按):
    • 將這個對話標示為優先對話
    • 將這個對話升級為對話框 (只有在應用程式支援對話框時才會顯示)
    • 將這個對話的通知靜音
    • 為這個對話設定自訂音效或震動

對話框中的對話

如果通知符合對話需求,平台就會透過通知匣以對話框形式啟動通知。
圖 2:透過通知匣以對話框形式啟動的通知。

自 Android 11 起,可透過「對話」區段中的通知啟動對話框。只有使用相關捷徑的通知才能以對話框形式顯示。如果將對話標示為重要或對話以通知欄中的對話框觸發,就會以對話框形式顯示對話。

對話捷徑

對話捷徑會顯示在啟動器中,並在 Sharesheet 中顯示長效共用捷徑

API 指南

本節說明可針對顯示大眾對話的系統空間,在應用程式中提供支援的 API。

對話捷徑

為了參與這種對話取向的計畫,應用程式必須為系統提供長效捷徑。強烈建議您使用長效的共用捷徑。如有需要,您可在 Android 11 中使用動態捷徑,但我們日後可能會移除這個選項。

若要將捷徑發布至對話,請呼叫 ShortcutManagerCompat 方法 setDynamicShortcuts()addDynamicShortcuts()pushDynamicShortcut() (可自動管理開發人員的捷徑限制)。這個捷徑必須是長效型,且為一位或多位使用者附加 Person 資料,以識別對話中的其他參與者。我們也建議您設定 LocusIdCompat

如果對話不再存在,應用程式可透過 removeLongLivedShortcuts() 刪除捷徑;如此一來,系統就會刪除與對話相關的所有資料。雖然可移除捷徑,但除非必要,否則應用程式不應移除快取捷徑;很可能會快取捷徑,因為使用者與其互動後,會改變其體驗,而移除捷徑也會復原這些變更,進而造成使用者的困擾。

對話通知

如果發生下列情況,將視通知為對話通知:

  • 通知使用 MessagingStyle

  • (只有在應用程式適用於 Android 11 以上版本時) 通知會與有效的長效動態或快取共用捷徑相關聯。通知可透過呼叫 setShortcutId()setShortcutInfo() 來設定此關聯。如果應用程式適用於 Android 10 以下版本,則通知不必與捷徑相關聯,如備用選項一節所述。

  • 使用者未在張貼當下,透過通知管道設定,將對話區段中的對話降級。

使用 LocusIdCompat

裝置端的智慧功能會決定使用者最有可能感興趣的對話。在每個對話中,最重要的信號分別是每個對話中對話工作階段的回訪率頻率。只要經過正確標記,系統就會知道與來自啟動器捷徑或通知中的對話的互動情形。不過,除非一併標記這些互動,否則系統不會知道全程都在應用程式中進行的對話。因此,我們強烈建議您LocusIdCompat 附加至捷徑,並使用相關的 LocusIdCompat 為應用程式內活動或片段加上註解。使用 LocusIdCompat 讓建議系統能為對話正確排名,並讓系統顯示使用者上次與對話互動 (包括應用程式內互動) 的正確時間。如果使用 setShortcutInfo() 建立對話與捷徑的關聯,對話系統會自動附加適當的 LocusIdCompat

Android 10 以下版本適用的應用程式的對話空間需求

如果應用程式不適用於 Android 11,則其訊息仍可在對話空間中顯示。不過,應用程式仍必須滿足特定需求。本節將說明這些應用程式適用的需求,以及應用程式不滿足這些需求時,須具備的備用行為。

至於參與訊息空間的核心需求,則是應用程式必須實作 MessagingStyle 通知,且通知必須參照張貼通知時,發布的通知中的長效捷徑。滿足這些需求的通知會顯示在對話空間中,並出現以下情形:

  • 通知會以「對話樣式」顯示
  • 提供「對話框」按鈕 (若已實作)
  • 以內嵌方式提供對話專屬 函式

如果通知未滿足這些需求,平台會使用備用選項將通知格式化。如果通知滿足任一備用方案的需求,通知就會以特殊格式顯示在對話空間中。如果通知資格不符合任一備用選項的條件,通知就不會顯示在對話空間中。

備用設定:如果使用 MessagingStyle,但未提供捷徑

如果應用程式適用於 Android 10 或以下版本,且通知使用 MessagingStyle,但建立訊息與捷徑的關聯,通知會顯示在對話空間中,並出現以下情形:

  • 通知會以「對話樣式」顯示
  • 不提供對話框按鈕
  • 不以內嵌方式提供對話專屬函式

備用設定:如果未使用 MessagingStyle,但應用程式是已辨識的訊息應用程式

如果通知未使用 MessagingStyle,但平台認定應用程式是訊息應用程式,且通知的 category 參數設為 msg,則通知會顯示在對話空間中,並出現以下行為:

  • 通知會以「Android 11 之前的舊版樣式」顯示
  • 不提供對話框按鈕
  • 不以內嵌方式提供對話專屬函式

指南、使用方法和測試

本節提供使用及測試對話功能的一般指南。

何時該使用對話?

對話通知和相關捷徑旨在改善「即時對話」的使用者體驗。例如,簡訊、文字即時通訊和通話都是使用者預期能夠快速交流的即時對話。對於電子郵件和與對話無關的活動,使用者就不會抱持這種期待。

只要使用者覺得對話出現在不恰當的空間中,他們現在有能力移除對話部分中的特定對話。

最佳做法

若要提高參與度,並讓使用者更容易與應用程式相關的用戶和對話互動,建議您採取下列最佳做法。

  • 為了確保未接來電會顯示在優先對話欄中,並正確顯示在轉換小工具中,請將未接來電通知的格式設為 conversations,並將類別設為 CATEGORY_MISSED_CALL
  • 為使用者提供高畫質顯示圖片 (104dp)。否則,系統就會使用該使用者的姓名縮寫,這會影響參與體驗。
  • 請勿在使用者還沒看到訊息之前 cancel 對話通知。例如,在使用者無法看到或處理訊息的檢視畫面中開啟應用程式時取消通知。如果使用者沒有機會讀取或處理訊息,取消的通知及其相關的對話框就被移除,造成對話內容遺失。
  • 提供與訊息有關的 MIME 相關中繼資料的 data URI,可讓您選擇在通知中提供更豐富的體驗。
  • 使用 Android 12 status API 讓對話小工具更有吸引力。
  • 採用下列對話捷徑的最佳做法。
    • 針對傳入和傳出的應用程式內對話 (未推播通知) 發布捷徑。相同對話的傳入和傳出訊息應有相同的捷徑 ID。請使用 pushDynamicShortcut() 發布捷徑及回報用量。
    • 為避免意外裁剪捷徑顯示圖片,請提供 AdaptiveIconDrawable 做為捷徑的圖示。詳情請參閱提供捷徑圖像
    • 為了協助系統宣傳您的捷徑,請遵循取得最佳排名指南。如果是共用捷徑,則會以不同系統途徑為捷徑排名,包括 Android Sharesheet。
    • 確保對話捷徑 intents 直接在適用的對話中啟動。
    • 使用 compat lib,方便您將捷徑設為與 conversation 相關。

測試對話通知和捷徑

長按對話即可開啟對話相關動作的選單。
圖 3:透過長按並檢查是否出現對話選單,即可確認是否正確設定對話通知。

如果您遵循對話空間指南,對話應自動顯示在對話空間中。長按通知即可確認是否正確整合捷徑。如果已正確完成整合,UI 會顯示對話相關動作。如果未將通知連結到捷徑,UI 會顯示文字,指出應用程式不支援對話功能。

長按應用程式啟動器時可顯示新增的捷徑。請務必測試捷徑是否將您導向應用程式中的正確位置。

分享共用捷徑可接收的內容時,新增的共用捷徑會顯示在 Sharesheet 的直接共用列中。

對話小工具

顯示在對話小工具中的對話
圖 1:顯示在對話小工具中的對話。

在 Android 12 中,對話小工具功能允許應用程式在對話小工具中顯示對話狀態,進一步強化 Android 11 推出的大眾對話功能。

對話小工具可讓使用者在主畫面上輕鬆開啟即時通訊,藉此促進使用者互動。這些小工具是進階版捷徑,可讓使用者快速回到對話,並顯示其對話狀態或其他相關資訊的文字片段。

驗證應用程式支援對話小工具

若要驗證應用程式是否支援對話小工具,您必須擁有至少兩台 Android 裝置 (皆搭載 Android 12) 和兩個使用者帳戶 (每台裝置各一個),以交換訊息。為了方便起見,我們稱帳戶為「使用者 A」和「使用者 B」。

用於新增對話小工具的小工具挑選器 UI
圖 2:用於新增對話小工具的小工具挑選器 UI。

操作步驟如下:

  1. 在使用者 A 的裝置上,長按啟動器。在小工具挑選器中,輕觸新的對話小工具,如圖 2 所示。
  2. 將小工具拖曳到主畫面上。從使用者 A 的應用程式中,應可選擇進行中或最近的對話清單。
  3. 現在,透過使用者 B 的裝置,傳送測試訊息給使用者 A。
  4. 回到使用者 A 的裝置,確認小工具已更新,可反映使用者 B 的訊息通知。
  5. 可選:請使用者 A 和使用者 B 將對話設為不同狀態值,確保小工具可如實反映。如需狀態值的清單,請參閱 ConversationStatus