對話通知和小部件

Android 11 新增了對按優先順序和警報等級自訂通知欄上對話通知的行為和位置的支持,允許將對話標記為「重要」並在對話空間中啟動特定於對話的氣泡

在這些 Android 11 功能的基礎上,Android 12 提供了兩項新的對話功能:

  • 「設定」中的「最近對話」功能使用戶可以自訂最近對話的通知行為,而無需等待通知。

  • 對話小工具功能使用戶可以在主螢幕上輕鬆打開聊天,快速查看最近的對話。

本文檔描述了對話通知和小部件的實現、自訂和驗證方面。

對話通知概述

Android 11 引入了一個新的系統原語,即“對話”,它由現有的共享快捷方式物件(隨 Android 9 推出)表示。

對話原語可以如下使用:

  • 透過Sharesheet (Android 10 中已有)在整個系統的應用程式之間共享對話資料。

  • 用於驅動氣泡(Android 11 中的快捷方式)。參見圖 1

  • 參與通知列頂部的新對話空間(在 Android 11 中實作)。參見圖2

  • 用於建立對話小工具(在 Android 12 中實作)。

    conv_bubbles

    圖 1:通知從通知抽屜以氣泡形式啟動

    conv_notification

    圖 2:位於通知列頂部的對話空間

除了連結到表示對話的捷徑之外,通知還使用MessagingStyle在對話空間中包含對話的最後一則訊息。

GMS 合作夥伴必須實施以下內容:

  • 新的對話空間作為通知欄頂部的單獨部分。
  • 允許並支援對話特定氣泡模式的通知樣式。

實施對話的合作夥伴也需要實施重要對話。然而,對話的實施可以與類似性質的 OEM 概念保持一致。總體而言,合作夥伴可以自由地將對話部分與其特定的系統 UI 保持一致。合作夥伴無需修改或實作 HAL/驅動程式/核心程式碼/擴充。

請參閱 AOSP 中 SystemUI 和 PeopleService 部分中的以下參考實作:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

驗證

為了確保您的功能版本能如預期運作,請驗證以下內容:

  1. 完全支援 Conversation API 的應用程式會在新部分中看到其通知,並且可以透過對話而不是通用的NotificationChannel自訂這些通知。

  2. 對話特定氣泡正在發揮作用。

若要驗證實現,請在通知包中使用以下測試:

  • CTS 測試。

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • CTS 驗證程式測試。

    cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
    
    

對話小部件概述

在 Android 12 中,對話小工具功能基於 Android 11 中建立的對話表示(如上一節所述)構建,允許應用為對話小工具中顯示的對話提供狀態。

conv_widgets

圖 3:對話小工具中顯示的對話

Android 12 中的對話小工具功能可讓使用者在主畫面上輕鬆開啟聊天,從而促進連線。這些小部件是增強的快捷方式,允許使用者有效地返回對話,同時顯示對話狀態的片段。

合作夥伴必須執行以下操作:

  1. SystemUI 提供的小工具。
  2. 從小部件選擇畫面新增這些小部件的流程。
  3. 支援小部件調整大小,如下所示:

實作對話小工具時請注意以下依賴關係:

  • 合作夥伴無需修改或實作 HAL/驅動程式/核心程式碼。
  • 狀態 API 允許應用程式將狀態或可用性資訊新增至對話和關聯的小工具中,用於實作。
  • 新設備實施和升級實施的過程是相同的。
  • 對話小工具功能依賴 Android 12 中啟動的一項新功能,該功能會快取最近看到的對話(例如來自通知的對話)。後一個功能允許擴展用戶可能添加到主螢幕的對話列表。

請參閱 SystemUI 和 Launcher3 檔案中的以下參考實作:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

客製化

無法開啟或關閉對話小工具功能。但是,只要滿足 GMS 要求,合作夥伴就可以更改小工具範本的佈局。

驗證

為了確保您的功能版本能如預期運作,請驗證以下內容:

  1. 長按啟動器時,可透過小工具選擇器新增用於對話的新對話小工具。 Widget 選擇器 UI 請參閱圖 4:

    widget_picker

    圖 4:用於新增對話小工具的小部件選擇器 UI

  2. 從選定的對話向裝置發送通知時,小工具會更新以反映這些通知。

  3. 使用ConversationStatus API 將狀態套用到該對話時,小工具會反映這些狀態。

  4. 使用者可以調整小部件的大小,小部件可以根據目前的啟動器更改其大小。您的小工具佈局必須能夠很好地適應不同裝置上不同的啟動器尺寸以及調整小工具的大小。

若要驗證實現,請在通知包中使用以下測試:

  • API 表面的 CTS 測試 (PeopleManagerTest)。

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • GMS 要求的手動測試 - 對話。