반응형
1. 구조
- 1. 작은 아이콘 : setSmallIcon()
- 2. 앱이름 : 앱 이름이 들어간다
- 3. 시간 : setShowWhen(false)
- 4. 큰 아이콘 : setLargeIcon()
- 5. 타이틀 : setContentTitle()
- 6. 메시지 : setContentText()
2. 구성
- NotificationManager : 알림을 시스템에 발생시키는 SystemService
- Notification : 알림 구성 정보를 가지는 객체
- NotificationCompat.Builder : 알림을 다양한 정보로 생성
- NotificationChannel : 알림의 관리 단위(Android Oreo에서 추가)
3. 순서
- NotificationManager 로 시스템서비스를 받아온다.
- 채널을 생성하여 해당 채널에 기능 및 구현을 한다.
- NotificationManager 에 해당 채널을 넣어 준다.
4. NotificationManager & NotificationChannel
시스템 서비스를 받아오는 공간으로, 채널을 생성하여 NotificationManager로 해당 채널을 넣어준다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager notificationManager = getSystemService(NotificationManager.class);
CharSequence name = "My Channel";
String description = "My Notification Channel";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
notificationManager.createNotificationChannel(channel);
}
5. NotificationCompat.Builder
아이콘, 타이틀, 내용, 중요도, 버튼, 알림 수동제거 여부를 결정할 수 있다
Intent resultIntent = new Intent(this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntentWithParentStack(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setLargeIcon(Bitmap icon)
.setContentTitle("My Notification Title")
.setContentText("Hello, this is a notification.")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(resultPendingIntent)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, builder.build());
Reference
반응형
'Android > Android Java' 카테고리의 다른 글
[Android Java] Scoped Storage 대응 (1) | 2023.11.21 |
---|---|
[Android Java] Notification Action, RemoteInput (1) | 2023.11.13 |
[Android Java] Clipboard 사용하기 (0) | 2023.11.03 |
[Android Java] Shortcuts (1) | 2023.11.03 |
[Android Java] File.mkdir()과 File.mkdirs()의 차이 (0) | 2023.11.03 |