반응형
안드로이드의 경우 8버전(오레오, API 26) 이후에는 알림 기능을 위해서는 알림에 대한 Channel을 설정해야 한다.
알림의 구현 과정
1. 알림 Channel을 만든다. (앱 설정에 UI에서는 Category라고 나온다.)
2. 알림을 설정하고 사용자에게 알림을 보낸다.
알림 구현 코드
1. 알림 Channel을 만든다.
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 오레오 버전 이상인 경우에 알림 채널을 만든다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 채널 아이디, 이름, 중요도 수준을(긴급=알림음 울리고 헤드업 알림 표시됨) 정함
NotificationChannel notificationChannel = new NotificationChannel(getString(R.string.channel_id), getString(R.string.channel_name), NotificationManager.IMPORTANCE_HIGH);
// 알림 채널 설명을 정함
notificationChannel.setDescription(getString(R.string.channel_desc));
// 알림시 빛 사용 여부를 정함
notificationChannel.enableLights(true);
// 알림 색상을 정함
notificationChannel.setLightColor(Color.RED);
notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
// 알림 채널을 만듬
notificationManager.createNotificationChannel(notificationChannel);
}
알림 중요도의 경우 4단계가 있는데 NotificationManager.IMPORTANCE_HIGH의 가장 높은 단계로 설정하면
진동, 소리 뿐만 아니라 다음 이미지처럼 위에서 내려오는(헤드업) 알람을 보낼 수 있다.
또한 앱 아이콘 클릭시 알림에 대한 미리보기가 가능하다.
2. 알림을 설정하고 사용자에게 알림을 보낸다.
// 알림 설정하기
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 펜딩 인텐트 설정
Intent notiIntent = new Intent(MainActivity.this, MainActivity.class);
// 기존에 해당 테스크가 없으면 새로운 task를 만들면서 생성함
notiIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notiIntent.putExtra("data", "data");
// getActivity -> 액티비티를 시작하는 인텐트를 생성함
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, notiIntent, PendingIntent.FLAG_UPDATE_CURRENT);
try {
notification = new NotificationCompat.Builder(getApplicationContext(), getString(R.string.channel_id))
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentTitle(getString(R.string.noti_title))
.setContentText(getString(R.string.noti_content) + ad)
.setLargeIcon(Glide.with(MainActivity.this).asBitmap().load("https://cdn.pixabay.com/photo/2020/01/02/10/52/monk-4735530_960_720.jpg").into(255, 255).get())
// 유저가 알림을 클릭하면 알림 리스트에서 자동으로 사라지게 함
.setAutoCancel(true)
// 앞에서 만든 알림 채널 아이디를 명시 해야함
.setChannelId(getString(R.string.channel_id))
// 설정한 펜딩인텐트 ㅁ명시
.setContentIntent(pendingIntent)
.build();
if (notificationManager != null) {
// 알림을 사용자에게 보내기
notificationManager.notify(1, notification);
}
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
}
알림을 설정할 때 펜딩 인텐트를 사용해 액티비티, 서비스, 리시버 등의 컴포넌트를 사용해 작업을 수행할 수 있다.
반응형
'Android > 개념 및 예제' 카테고리의 다른 글
toggle Button을 만드는 3가지 방법 (0) | 2020.12.29 |
---|---|
ConstraintLayout 이해, 정복하기 (0) | 2020.09.06 |
모서리가 둥근 ImageView, Button, TextView 만들기 (0) | 2020.08.13 |
[RecyclerView]Header와 Footer를 가진 리사이클러뷰 (0) | 2020.08.13 |
[안드로이드/Android] 플레이스토어 앱 강제로 업데이트하기 (0) | 2020.07.23 |