본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Bundled Notification Tutorial

by 돼지왕 왕돼지 2018. 3. 2.
반응형


android wear, Builder, Bundle, Bundled Notification, compat, Group, GroupKey, GroupSummary, list, message, noti id, notification, notificationCompat, nougat, setcontenttext, setcontenttitle, setGroup, setGroupSummary, setShowWhen, setsmallicon, setwhen, stacking notification, SUMMARY, summary noti, summary notification, Title, tutorial, [android] Bundled Notification Tutorial, 미지원버전


-

Bundled Notification 은 Android Wear 의 Stacking Notification 과 비슷한 맥락이다.

Notification 이 하나의 Title 밑에 List 형태로 붙어서 나온다.

그리고 이 녀석을 클릭하면, Notification 이 확장되서 개개별 Notification 으로 나뉘어 나온다.


android wear, Builder, Bundle, Bundled Notification, compat, Group, GroupKey, GroupSummary, list, message, noti id, notification, notificationCompat, nougat, setcontenttext, setcontenttitle, setGroup, setGroupSummary, setShowWhen, setsmallicon, setwhen, stacking notification, SUMMARY, summary noti, summary notification, Title, tutorial, [android] Bundled Notification Tutorial, 미지원버전



-

Bundled Notification 은 Nougat 부터 사용 가능하다.

Nougat 이전 버전에서는 아래와 같이 나온다.

android wear, Builder, Bundle, Bundled Notification, compat, Group, GroupKey, GroupSummary, list, message, noti id, notification, notificationCompat, nougat, setcontenttext, setcontenttitle, setGroup, setGroupSummary, setShowWhen, setsmallicon, setwhen, stacking notification, SUMMARY, summary noti, summary notification, Title, tutorial, [android] Bundled Notification Tutorial, 미지원버전



-

Bundled Notification 의 핵심은 “Group” 이라는 녀석과 “GroupSummary” 이란 녀석이다.

private Notification buildNotification(Message message, String groupKey){

    return new NotificationCompat.Builder(context)

        .setContentTitle(message.sender())

        .setContentText(message.message())

        .setWhen(message.timestamp())

        .setSmallIcon(R.drawable.ic_message)

        .setShowWhen(true)

        .setGroup(groupKey) // API 20 이상

        .build();

}


private Notification buildSummary(Message message, String groupkey){

    return new NotificationCompat.Builder(context)

        .setContentTitle(“Nougat Messenger”)

        .setContentText(“You have unread messages”)

        .setWhen(message.timestap())

        .setSmallIcon(R.drawable.ic_message)

        .setShowWhen(true)

        .setGroup(groupKey)

        .setGroupSummary(true) // summary noti 로 만드는 핵심, API 20 이상

        .build();

}


private void sendBundledNotification(Message message){

    Notification notification = buildNotification(message, GROUP_KEY);

    notificationManager.notify(getNewNotificationId(), notification);

    Notification summary = buildSummary(message, GROUP_KEY);

    notificationManager.notify(SUMMARY_ID, summary);

}


groupKey 를 통해 묶여있는 녀석들은 하나의 Notification 형태로 나타난다.

이 때, Summary 로 나타나있는 녀석이 제공되어야만 Bundle 이 되고,

Compat 으로 지원되지 않는 버전에서는 Summary Notification 이 대표로 보이게 된다.


각 bundle 되어야 하는 message 들은 매번 새로운 Noti ID 를 가져도 되지만,

Summary Noti 는 같은 Noti ID 를 가져야 한다.






반응형

댓글