Edited at

Android Nでたくさんの通知をまとめてみたよ

More than 3 years have passed since last update.


はじめに

Android Nで新しく提供されたバンドル通知を試してみたので、実装方法のメモです。


バンドル通知の実装


通知をまとめるための通知

まず、複数の通知を1つにまとめるための通知をします。

通知がまとめられた際に、SummaryText以外はセットしても表示されないので、SummaryTextのみセットします。

最後のnotifyメソッドの通知IDは固定にしておかないと毎回別々の通知になってしまうので、定数で任意の値を定義しておきます。

// サマリ通知

Notification summaryNotification = new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.ic_dialog_email)
.setStyle(new NotificationCompat.BigTextStyle()
.setSummaryText("SummaryText"))
.setGroup(GROUP_KEY)
.setGroupSummary(true)
.build();
notificationManager.notify(SUMMARY_NOTIFICATION_ID, summaryNotification);

項目
内容

summaryText
通知の概要

smallIcon
通知のアイコン

group
通知のまとまりを識別するためのKEY

groupSummary
通知をまとめるための通知かどうか


まとまってる通知に通知する

あとは普通に通知します。

通知をまとめるため、setGroupでサマリ通知と同じGROUP_KEYを設定しておく必要があります。

ここではとりあえず5個くらい通知してみます。

for (int i = 1; i <= 5; i++) {

int uuid = UUID.randomUUID().hashCode();
Notification notif = new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.ic_dialog_alert)
.setStyle(new NotificationCompat.BigTextStyle()
.setBigContentTitle("BigContentTitle" + i)
.setSummaryText("SummaryText" + i)
.bigText("bigText" + i))
.setGroup(GROUP_KEY)
.build();
notificationManager.notify(uuid, notif);
}


実行してみる

できた!


他のバージョン(Android 5.0)で実行すると…

サマリ通知だけ表示され、他は出てきません。

バンドル通知はAndroid Nからの機能なので、うまく表示されないのは当然といえば当然ですね。


Android Wearだと…

Android Wearでは似たような機能があるため、Android Nと同じように通知がまとまって表示されます。

「+4 more」と書かれている部分をタップすると、通知が1枚1枚表示されます。


グループ化された通知の上限

グループ化された通知は最大8個までしか表示できないようです。

しかし、上の通知を消せば、隠れてた通知が順番に出てきます。


結論


  • 通知がまとまってくれると超便利

  • Android N未満とAndroid N以上で通知の実装を分ける必要がありそう

  • Android Wearも別途通知を実装する必要がありそう

何か間違っているところなどあれば教えていただけると嬉しいです。

以上、お疲れさまでした。


参考


通知 | Android Developers

https://developer.android.com/preview/features/notification-updates.html?hl=ja