この記事を書いている時点ではAndroid 16においてユーザー側で通知のグループ化を無効にする方法はありません。アプリ開発者側での話になります。
Android 13~15までは、通知を作成する時にNotification.Builder#setGroup(java.lang.String)でグループキーを設定しておけばグループ化されず、個別に通知が表示されていました。しかしAndroid 16からこの回避策が効かなくなり、通知を2つ以上出すと自動的にグループ化されるようになってしまいました。
参照: Android 16 が登場
Android パブリックトラッカーでAndroid 16での通知のグループ化をアプリごとでオプトアウトできるようにと要望も上がっていましたが、今のところGoogleはやらないようです。
参照: Per-app setting to opt-out of Android 16 notification grouping
Androidアプリの開発者向けのページの 通知の動作 によるとAndroid 16.0 (API レベル 36) では
次の通知は自動的にグループ化されます。
- 要約のない通知
- 子通知のない通知
- 子通知が 1 つまたは少ない通知
となっています。つまり要約(Summary)があればグループ化されなさそうです。
で、ボタンをタップして通知を出すサンプルコード。
button.setOnClickListener { v ->
val notification = Notification.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_android)
.setGroup("group-$count")
.setContentText("count=$count")
.build()
notificationManager.notify(count, notification)
val notificationSummary = Notification.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_android)
.setGroup("group-$count")
.setGroupSummary(true)
.build()
notificationManager.notify(Integer.MAX_VALUE - count, notificationSummary)
count++
}
1つの通知につき1つの要約と通知ごとにグループキーを変更する必要があるのでで、少し手間ではありますがこれでグループ化を回避できます。こんな感じになります(エミュレータでやってるので動作が遅いです)。
上の動画でも分かるのですが、いくつも通知を出せるわけではなく6つになるとグループ化されてしまいます。
ソース https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-16.0.0_r4/services/core/java/com/android/server/notification/NotificationManagerService.java#672 を見てみると6個以上になった時にグループ化するように設定されていてこの値は変更できないので6個以上出すのは諦めましょう。
0 件のコメント:
コメントを投稿