Androidの通知は、3つまでは独立して表示されますが、4つ以上たまると、アプリごとにまとめられてしまいます。(API Levelで挙動が変わる場合があります)
通知3つまで | 通知4つ以上 | 通知4つ以上 |
---|---|---|
![]() |
![]() |
![]() |
通知エリアが通知で埋まってしまうと、必要な通知も探せなくなってしまうので、アプリ単位でまとまるメリットもありますが、一つのアプリの全部の通知がまとまってしまうので、重要度の低い通知の中に重要度の高い通知が埋もれてしまうというデメリットもあります。
このグルーピング機能を制御する方法が用意されています。
通知をまとめさせない
setGroup()
でgroupを設定すると、自動でまとまらなくなります。
notificationManager.notify(
id++,
NotificationCompat.Builder(this, "channel1-1")
.setSmallIcon(R.drawable.ic_small_icon)
.setGroup("group2")
.setContentTitle("1-2")
.setContentText("text 1-2")
.build()
)
いくつ通知しても、独立した通知のままです。
group指定なし | group指定あり |
---|---|
![]() |
![]() |
全部独立して通知がたまってしまうとユーザビリティ的にもあまり良い状態ではないですね。
アプリ単位でまとまってしまうと埋もれてしまうので避けたいのだけど、種別単位ぐらいでまとまってほしいところ。
groupを設定するとグルーピングされないというのはすこし奇妙ですが、本来は次のように、複数のまとまりに分けてグルーピングさせる機能です。
グループ単位でまとめさせる
groupを設定した通知と、setGroupSummary(true)
を設定した通知を送ることで、同じgroupでまとめることができるようになります。
notificationManager.notify(
SUMMARY_ID, // 固定値
NotificationCompat.Builder(this, "channel1-1")
.setSmallIcon(R.drawable.ic_small_icon)
.setGroup("group1")
.setGroupSummary(true)
.build()
)
notificationManager.notify(
id++,
NotificationCompat.Builder(this, "channel1-1")
.setSmallIcon(R.drawable.ic_small_icon)
.setGroup("group1")
.setContentTitle("2-1")
.setContentText("text 2-1")
.build()
)
通知3つまで | 通知4つ以上 |
---|---|
![]() |
![]() |
groupを設定していない通知は、これまでと同様に、4つ以上通知がたまるとアプリ単位でまとまるようになります。gropを設定していると、アプリ単位でまとまる通知には含まれなくなり、groupとsummaryを設定している場合は、2つ以上の通知があるとまとまるようになります。
複数の重要度の異なるカテゴリーの通知を行っている場合は、重要度の高い通知を独立させることで、ユーザーに気づいてもらいやすくでききるかもしれませんね。
※安易に全部を独立させて通知エリアを自分のアプリの通知で埋めてやるぜ、みたいなことはしないでくださいね。
以上です。