1. Small icon: 필수 구성요소이며 setSmallIcon()을 통해 설정된다.
2. App name: 시스템에서 제공한다.
3. Time stamp: 시스템에서 제공하지만 setWhen()을 사용하여 재정의하거나 setShowWhen(false)로 숨길 수 있다.
4. Large icon: 선택사항이며 setLargeIcon()을 통해 설정된다.
5. Title: 선택사항이며 setContentTitle()을 통해 설정된다.
6. Text:선택사항이며 setContentText()를 통해 설정된다.
알림은 다음과 같은 클래스를 이용하여 구성합니다
NotificationManager : 알림을 시스템에 발생시키는 SystemService
Notification : 알림 구성 정보를 가지는 객체
NotificationCompat.Builder : 알림을 다양한 정보로 생성
NotificationChannel : 알림의 관리 단위(Android Oreo에서 추가)
Notification 객체에 각종 정보를 담고 이 객체를 NotificationManager로 시스템에 등록하는 구조입니다. getSystemService() 함수를 이용하여 NotificationManager를 얻는다.
// NotificationManager 객체 생성
val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Notification Channel 아이디, 이름, 설명, 중요도 설정
val channelId = "channel_one"
val channelName = "첫 번째 채널"
val channelDescription = "첫 번째 채널에 대한 설명입니다."
val importance = NotificationManager.IMPORTANCE_DEFAULT
// NotificationChannel 객체 생성
val notificationChannel = NotificationChannel(channelId, channelName, importance)
// 설명 설정
notificationChannel.description = channelDescription
// 채널에 대한 각종 설정(불빛, 진동 등)
notificationChannel.enableLights(true)
notificationChannel.lightColor = Color.RED
notificationChannel.enableVibration(true)
notificationChannel.vibrationPattern = longArrayOf(100L, 200L, 300L)
// 시스템에 notificationChannel 등록
notificationManager.createNotificationChannel(notificationChannel)
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Notification Channel 아이디, 이름, 설명, 중요도 설정
val channelId = "channel_one"
// 채널 생성 코드...
// API Level 26(O) 이상에서는 Builder 생성자에 NotificationChannel의 아이디값을 설정
notificationCompatBuilder = NotificationCompat.Builder(this, channelId)
} else {
// 26버전 미만은 생성자에 context만 설정
notificationCompatBuilder = NotificationCompat.Builder(this)
}
notificationCompatBuilder?.let {
// 작은 아이콘 설정
it.setSmallIcon(android.R.drawable.ic_notification_overlay)
// 시간 설정
it.setWhen(System.currentTimeMillis())
// 알림 메시지 설정
it.setContentTitle("Content Title")
// 알림 내용 설정
it.setContentText("Content Message")
// 알림과 동시에 진동 설정(권한 필요(
it.setDefaults(Notification.DEFAULT_VIBRATE)
// 클릭 시 알림이 삭제되도록 설정
it.setAutoCancel(true)
}
// Notification 객체 생성
val notification = notificationCompatBuilder?.build()
// Notification 식별자 값, Notification 객체
notificationManager?.notify(0, notification)