猛禽洛的程式筆記庫

[Android] 將通知欄的通知收合成群組 GroupSummary

當通知訊息很多時,通知欄的位置就會非常長,甚至影響使用者要看其他APP通知的方便性

所以有個Group的功能,能將同分類的通知全部整合在一個群組通知裡,如以下官方文件的圖:

1.首先,以下是原本的單筆通知,我們在Builder中加上setGroup的參數進去:

Notification newMessageNotification = new NotificationCompat.Builder(this, channelId)
                .setSmallIcon(R.mipmap.icon_bell)
                .setContentTitle(messageTitle)
                .setContentText(messageBody)
                .setAutoCancel(true)//點擊後通知自動關閉
                .setWhen(time)//設定顯示時間
                .setSound(defaultSoundUri)//自訂音效
                .setContentIntent(pendingIntent)//點擊後要前往的畫面
                .setGroup("FCM")//----增加此行----指定群組
                .setDefaults(Notification.DEFAULT_ALL)
                .setPriority(Notification.PRIORITY_DEFAULT)
                .build();
//將通知顯示出來
notificationManager.notify(notifyIdIndex /* ID of notification */, newMessageNotification);

2.增加群組摘要(GroupSummary):

Notification summaryNotification = new NotificationCompat.Builder(this, channelId)
                .setContentTitle(messageTitle)
                //set content text to support devices running API level < 24
                //舊裝置可能不支援收折後的樣式,所以自己訂一個子內容替代顯示,例如:您有N則新訊息
                .setContentText(messageTitle)
                .setSmallIcon(R.mipmap.icon_bell)
                //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
                .setAutoCancel(true)
                .setGroup("FCM")//指定要套用此摘要的群組
                //set this notification as the summary for the group
                .setGroupSummary(true)//此通知是一個GroupSummary
                .setContentIntent(pendingIntent)//點擊整個群組(沒有展開)要去的地方
                .build();
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//最後,套用此summaryNotification
notificationManager.notify(1, summaryNotification);

這樣只要在同一個群組(FCM)裡的通知,就會自己收疊起來了,是不是很方便呢~

-END-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *