通知グループを作成する

Android 7.0(API レベル 24)以降では、関連する通知を できます。たとえば、アプリで受信メールの通知を表示する場合は、 同じグループ内の新着メールに関するすべての通知を表示し、 説明します。

古いバージョンをサポートするには、単独で表示される概要通知を追加して、 まとめることができます。通常は、 受信トレイ形式の通知

図 1. 折りたたまれた(上)と開いた(下) クリックします。

次のすべての条件に当てはまる場合は、通知グループを使用してください case:

  • 子通知は完全な通知であり、表示することができます。 グループの概要は不要です。

  • 子通知を個々に表示する利点がある。次に例を示します。

    • 子通知に対して操作が可能で、各通知に固有の操作がある。

    • 各通知には、ユーザー向けの詳細情報が含まれています。

通知が上記の条件を満たしていない場合は、 既存の通知を更新する メッセージ スタイルの文章を作成したり、 通知を表示します。 1 つの会話で複数の更新を行うことです。

グループを作成して通知を追加する

通知グループを作成するには、そのグループの一意の識別子文字列を定義します。 次に、グループで使用する通知ごとに、 setGroup() グループ名を渡します。例:

Kotlin

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()

Java

String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification = new NotificationCompat.Builder(MainActivity.this, 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 のバージョンによって異なります。

  • バージョン 7.0(API レベル 24)より前の Android の場合、ネストされた グループの概要のみが表示されます。 その他すべての通知は非表示になります。ユーザーは [グループの概要] アプリを開きます。

  • Android 7.0 以降では、グループの概要通知が表示されます。 ネストされた通知のグループとして、各通知のテキストのスニペットでラベル付け グループ化された通知を表示しますグループで設定したテキストは表示されません。 概要通知ネストされた通知グループを展開できる グループ内の個々の通知を確認できます(図 1 を参照)。

新しいバージョンの Android では、グループの概要テキストが表示されない場合でも、 グループ化を有効にするには、サマリーを手動で設定する必要がある できます。グループの概要の動作は、デバイスによって異なる場合があります。 ウェアラブルなどのデバイスにも対応していますグループの概要でリッチ コンテンツを設定すると、 すべてのデバイスとバージョンで快適に使用できます。

グループ概要を追加する手順は次のとおりです。

  1. グループの説明を含む新しい通知を作成する(通常は最適) 受信トレイのスタイルで 通知をご覧ください。

  2. setGroup() を呼び出して、概要通知をグループに追加します。

  3. 次の呼び出しによって、グループ サマリーとして使用する必要があることを指定します。 setGroupSummary(true)

次のコードは、グループ サマリーを作成する例を示しています。

Kotlin

// 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)
}

Java

// Use constant ID for notifications used as group summary.
int SUMMARY_ID = 0;
String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification1 =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject1.getSummary())
        .setContentText("You will not believe...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

Notification newMessageNotification2 =
    new NotificationCompat.Builder(MainActivity.this, 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();

Notification summaryNotification =
    new NotificationCompat.Builder(MainActivity.this, 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(new 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 notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(emailNotificationId1, newMessageNotification1);
notificationManager.notify(emailNotificationId2, newMessageNotification2);
notificationManager.notify(SUMMARY_ID, summaryNotification);

概要通知の ID は、1 回だけ送信し、 概要情報に変更があったときに更新できます。それ以降 グループに追加された場合、既存の要約を更新する必要があります。

通知を使用するサンプルコードについては、Android の通知 サンプル をタップします。

自動グループ化

Android 7.0(API レベル 24)以降では、アプリが グループキーまたはグループ サマリーを指定していない場合、 自動的にグループ化されます。グループ化された通知が自動的に表示されます テキストの一部でラベル付けされたグループの概要通知が、 グループ化できますユーザーはこの概要通知を展開して、 通知を個別にグループ化できます。

自動グループ化の動作は、デバイスタイプによって異なる場合があります。最適なユースケースを すべてのデバイスとバージョンで利用できます。 グループ化するには、グループキーとグループの概要を指定して、確実にグループ化します。