從 Android 7.0 (API 級別 24) 開始,您可以在群組中顯示相關通知。舉例來說,如果應用程式會顯示收到電子郵件的通知,請將所有新郵件通知放在同一群組,這樣通知就會一併收合。
如要支援較低版本,請新增摘要通知,單獨顯示所有個別通知的摘要。通常會使用收件匣樣式的通知。

如果您的用途符合下列所有條件,請使用通知群組:
子通知是完整的通知,可以個別顯示,不需要群組摘要。
個別顯示子通知有其好處。例如:
每則通知都有專屬動作。
每則通知都會顯示更多資訊供使用者查看。
如果通知不符合上述條件,請考慮更新現有通知,加入新資訊,或建立訊息樣式的通知,在同一個對話中顯示多則更新。
建立群組並在其中新增通知
如要建立通知群組,請為群組定義專屬 ID 字串。
接著,針對群組中的每則通知,呼叫 setGroup 並傳遞群組名稱。例如:
val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL" val newMessageNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setGroup(GROUP_KEY_WORK_EMAIL) .build()
根據預設,系統會依通知發布時間排序,但您可以呼叫 setSortKey 變更排序。
如果通知群組的快訊必須由其他通知處理,請呼叫 setGroupAlertBehavior。舉例來說,如要讓群組摘要發出音效,群組中的所有孩子都必須啟用群組快訊行為 GROUP_ALERT_SUMMARY。其他選項為 GROUP_ALERT_ALL 和 GROUP_ALERT_CHILDREN。
設定群組摘要
分組通知必須有額外的通知,做為群組摘要。如要啟用通知群組功能,請務必設定群組摘要。這個群組摘要必須包含群組中其他各個通知的部分文字,協助使用者瞭解群組中的內容。群組摘要的顯示方式取決於 Android 版本:
Android 7.0 (API 級別 24) 以下版本無法顯示巢狀通知群組,因此系統只會顯示群組摘要通知,並隱藏所有其他通知。使用者可以輕觸群組摘要通知,開啟應用程式。
在 Android 7.0 以上版本中,系統會將群組摘要通知顯示為巢狀通知群組,並標示每個群組通知的文字片段。不會顯示您在群組摘要通知中設定的文字。使用者可以展開巢狀通知群組,查看群組中的個別通知,如圖 1 所示。
即使較新版本的 Android 不會顯示您設計的群組摘要文字,您仍須手動設定摘要,才能啟用群組通知。群組摘要的行為可能會因某些裝置類型而異,例如穿戴式裝置。為群組摘要設定多媒體內容,有助於在所有裝置和版本上提供最佳體驗。
如要新增群組摘要,請按照下列步驟操作:
建立新通知,並附上群組說明,通常最好使用收件匣樣式通知。
呼叫
setGroup,將摘要通知新增至群組。呼叫
setGroupSummary(true),指定必須將其做為群組摘要。
以下程式碼範例說明如何建立群組摘要:
// Use constant ID for notifications used as group summary. val SUMMARY_ID = 0 val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL" val newMessageNotification1 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject1.getSummary()) .setContentText("You will not believe...") .setGroup(GROUP_KEY_WORK_EMAIL) .build() val newMessageNotification2 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject2.getSummary()) .setContentText("Please join us to celebrate the...") .setGroup(GROUP_KEY_WORK_EMAIL) .build() val summaryNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle(emailObject.getSummary()) // Set content text to support devices running API level < 24. .setContentText("Two new messages") .setSmallIcon(R.drawable.ic_notify_summary_status) // Build summary info into InboxStyle template. .setStyle( NotificationCompat.InboxStyle() .addLine("Alex Faarborg Check this out") .addLine("Jeff Chang Launch Party") .setBigContentTitle("2 new messages") .setSummaryText("janedoe@example.com") ) // Specify which group this notification belongs to. .setGroup(GROUP_KEY_WORK_EMAIL) // Set this notification as the summary for the group. .setGroupSummary(true) .build() NotificationManagerCompat.from(this).apply { notify(emailNotificationId1, newMessageNotification1) notify(emailNotificationId2, newMessageNotification2) notify(SUMMARY_ID, summaryNotification) }
摘要通知 ID 必須維持不變,這樣系統只會發布一次通知,而且摘要資訊變更時,您之後可以更新通知。後續新增至群組的項目必須更新現有摘要。
自動分組
在 Android 7.0 (API 級別 24) 以上版本中,如果應用程式傳送通知,但未指定群組鍵或群組摘要,系統可能會自動將這些通知歸為一組。自動分組的通知會顯示群組摘要通知,並標有部分分組通知的文字片段。使用者可以展開這則摘要通知,查看每則通知,就像手動分組的通知一樣。
部分裝置類型可能會自動分組,為確保所有裝置和版本都能提供最佳體驗,如果通知必須分組,請指定群組鍵和群組摘要,確保通知會分組。