Android 7.0(API レベル 24)以降では、関連する通知をグループで表示できます。たとえば、アプリで受信メールの通知を表示する場合、新着メール メッセージのすべての通知を同じグループに配置して、まとめて折りたたむことができます。
下位バージョンをサポートするには、個別の通知をすべてまとめた概要通知を単独で追加します。通常は、受信トレイ スタイルの通知を使用します 。
ユースケースで次の条件がすべて満たされている場合は、通知グループを使用します。
子通知は完全な通知であり、グループ概要がなくても個別に表示できます。
子通知を個別に表示するメリットがあります。例:
通知ごとに固有のアクションがあります。
各通知にユーザーが確認できる詳細情報が含まれています。
通知が上記の条件を満たしていない場合は、代わりに 既存の通知を新しい情報で更新するか、 メッセージ スタイルの通知を作成して、同じ 会話で複数の更新情報を表示することを検討してください。
グループを作成して通知を追加する
通知グループを作成するには、グループの固有識別子文字列を定義します。次に、グループに追加する通知ごとに、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 は、1 回だけ投稿されるように、また概要情報が変更された場合に後で更新できるように、同じ ID を使用する必要があります。グループに後から追加した場合は、既存の概要を更新する必要があります。
自動グループ化
Android 7.0(API レベル 24)以降では、アプリが通知を送信し、グループキーまたはグループ概要を指定しない場合、システムによって自動的にグループ化されることがあります。自動的にグループ化された通知は、グループ化された通知のテキスト スニペットでラベル付けされたグループ概要通知とともに表示されます。ユーザーは、手動でグループ化された通知と同様に、この概要通知を展開して個々の通知を確認できます。
自動グループ化の動作は、一部のデバイスタイプで異なる場合があります。すべてのデバイスとバージョンで最適なエクスペリエンスを提供するには、通知をグループ化する必要があることがわかっている場合は、グループキーとグループ概要を指定して、グループ化されるようにします。