'개발새발'에 해당되는 글 56건

어플리케이션을 개발한다면 당연히 사용자에게 알림(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 설정을 하면 된다.

블로그 이미지

나뷜나뷜

,