반응형
안드로이드 코드랩 하나씩 리뷰를 하면서 정리하려고 합니다.
이번 편은 알림입니다.
기본적으로 알림은 위와 같이 구성이 되어 있습니다. 이러한 구성들의 속성을 변경 하면서 알림을 구성을 할 수 있습니다. 카카오톡이나 타이머 등에서 나타나는 알람들, 푸쉬 메시지 라고 생각하시면 됩니다
- NotificationManager 클래스를 사용하여 알림 을 생성, 전송, 업데이트 및 취소 가능
- 알림 채널을 설정 하려면 createNotificationChannel 메소드 와 함께 NotificationChannel 객체를 사용
- 알림에 빠른 작업을 추가 하려면 addAction ()
- 배지를 활성화하거나 비활성화 하려면 setShowBadge ()
- Notification.Style 에서 확장 된 스타일을 사용하여 알림 스타일을 지정
- NotificationChannel.setImportance ()로 중요도 수준 설정
이러한 것들을 해줄 수 있습니다.
1단계 기본 알림 만들기
목표: 새 알림을 만들고, 사용자 메시지를 설정하고 알림을 보냄
* 알림 채널은 안드로이드 API 26 버전 부터 지원합니다. 알림을 그룹하 하여 알림을 제어할 수 있도록 합니다.
1. 함수 구성
fun NotificationManager.sendNotification(messageBody: String, applicationContext: Context) {
} //함수를 구성해줍니다.
// 이렇게 구성을 해주면 NotificationManager 에서 확장하여 사용할 수 있습니다.
val builder = NotificationCompat.Builder(
applicationContext,
applicationContext.getString(R.string.egg_notification_channel_id)
)
.setSmallIcon(R.drawable.cooked_egg)
.setContentTitle(applicationContext.getString(R.string.notification_title))
.setContentText(messageBody)
//아이콘, 제목, 내용을 설정
notify(NOTIFICATION_ID, builder.build())
이렇게 작성을 하시면 직접 호출이 가능합니다.
fun NotificationManager.sendNotification(messageBody: String, applicationContext: Context) {
val builder = NotificationCompat.Builder(
applicationContext,
applicationContext.getString(R.string.egg_notification_channel_id)
)
.setSmallIcon(R.drawable.cooked_egg)
.setContentTitle(applicationContext.getString(R.string.notification_title))
.setContentText(messageBody)
//아이콘, 제목, 내용을 설정
notify(NOTIFICATION_ID, builder.build())
} //함수를 구성해줍니다.
// 이렇게 구성을 해주면 NotificationManager 에서 확장하여 사용할 수 있습니다.
2. 뷰 모델 설정
val notificationManager = ContextCompat.getSystemService(app, NotificationManager::class.java
) as NotificationManager
notificationManager.sendNotification(app.getString(R.string.timer_running), app)
as 는 Java 에서 extends 하고 비슷합니다. 위와 같이 프로그래밍 해주면 sendNotification() 을 사용할 수 있습니다.
하지만 (알림 채널이 없어서 알림 채널이 없다는 logcat 을 볼 수 있습니다)
2단계 알림 채널
* 알림 채널은 안드로이드 API 26 버전 부터 지원합니다. 알림을 그룹하 하여 알림을 제어할 수 있도록 합니다.
이를 쉽게 말을 하자면 API 26 이상을 쓰는 모든 디바이스는 알림채널을 구성해주어야 한다는 의미 입니다.
1. 함수 구성
//EggTimerFragment.kt 에서 구성합니다.
private fun createChannel(channelId: String, channelName: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // API 26 이상을 의미 합니다.
val notificationChannel = NotificationChannel(
channelId, // 값들은 따로 설정을 해주어야 합니다.
channelName,
)
val notificationManager = requireActivity().getSystemService(
NotificationManager::class.java
) //알림 매니저를 받아서
notificationManager.createNotificationChannel(notificationChannel) // 채널을 만들어 줍니다
}
}
참조
반응형
'안드로이드' 카테고리의 다른 글
[WindowManger] 윈도우 매니저 개선하기 2 (환경 구성하기) (0) | 2020.12.29 |
---|---|
[WindowManager] 윈도우 매니저 개선하기 1 (0) | 2020.12.29 |
[안드로이드] 앱을 빨리 이해하는 방법(1) - 연재중 (0) | 2020.12.04 |
[안드로이드] 개념 및 용어 정리 - 인텐트 intent (0) | 2020.11.18 |
안드로이드 써야하는 목록 (0) | 2020.01.07 |
댓글