어플리케이션을 개발한다면 당연히 사용자에게 알림(Notification)을 제공할 필요가 있다.
일반적으로 알림은 NotificationManager의 notify 메소드를 이용하면 쉽게 구현할 수 있다.
만약, Android O 이상을 타깃으로 한다면 NotificationChannel을 추가해야 한다.
NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription(CHANNEL_DESC);
notificationManager.createNotificationChannel(channel);
}
NotificationChannel 생성자에서 요구하는 Importance는 Android O 이상에서 아래와 같다.
- IMPORTANCE_HIGH: Urgent (소리와 함께 알림 표시)
- IMPORTANCE_DEFAULT: High (소리 알림)
- IMPORTANCE_LOW: Medium (소리 없음)
- IMPORTANCE_MIN: Low (소리나 상태바 알림이 없음)
필요에 따라 Importance 레벨을 선택하여 생성하면 된다.
이제 (Android O 이상에서는 NotificationChannel을 이용하여 생성한) NotificationManager로 notify를 호출하면 완성이다.
for (int i = 0; i < listNotification.size(); i++) {
Intent intentNotification = new Intent(context, NotificationActivity.class);
intentNotification.setFlags(Intent.FLAG_ACTIVITY_NOTIFICATION);
PendingIntent pendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, intentNotification, FLAG);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID);
.setSmallIcon(DRAWABLE_SMALL_ICON)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setGroup(GROUP_ID)
.setAutoCancel(true);
notificationManager.notify(i, builder.build());
}
위 예제와 같이 알림을 터치하면 실행할 액션을 Intent로 생성 후 NotificationCompat.Builder를 통해 Icon, Priority, Intent, AutoCancel 등을 설정하면 된다.
이때 알림은 아래와 같은 Priority에 따라 화면에 보여진다.
- PRIORITY_MAX: 2
- PRIORITY_HIGH: 1
- PRIORITY_DEFAULT: 0
- PRIORITY_LOW: -1
- PRIORITY_MIN: -2
또한, 알림 메시지를 그룹화하기 위해서는 간단히 setGroup 설정을 하면 된다.
'Development > Android' 카테고리의 다른 글
간단하게 갤러리 이미지 가져오기 (0) | 2019.04.07 |
---|---|
안드로이드 기능 권한 허가 받기 (Android 6.0, API 23 이상) (0) | 2019.01.20 |