TodayILearned/Android&Kotlin
앱개발 숙련 TIL - Notification
YJ_ILY
2023. 8. 25. 17:56
알림(Notification)
- 사용자에게 앱과 관련한 정보를 보여주는 기능
- 알림을 터치하여 해당 앱을 열 수 있음
- 보통 단말기 상단 부분에 표시, 앱 아이콘의 배지로도 표시
- Android 8.0 이상부터는 알림 채널을 이용해서 알림을 만들어야 함
- 채널 생성 코드
private val myNotificationID = 1
private val channelID = "default"
private fun createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Android 8.0
val channel = NotificationChannel(channelID, "default channel",
NotificationManager.IMPORTANCE_DEFAULT)
channel.description = "description text of this channel."
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
알림 생성
- NotificationCompat.Builder 객체에서 알림에 대한 UI정보 및 작업 지정
- setSmallcon() : 작은 아이콘
- setContentTitle() : 제목
- setContentText() : 세부텍스
- NotificationCompat.Builder.build() 호출
- Notification 객체 반환
- NotificationManagerCompat.notify() 호출해서 시스템에 Notification객체 전달
private val myNotificationID = 1
private fun showNotification() {
val builder = NotificationCompat.Builder(this, channelID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("title")
.setContentText("notification text")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
NotificationManagerCompat.from(this).notify(myNotificationID, builder.build())
}
알림 중요도 설정
Android 8.0이상
- NotificationChannel
- ChannelID, "defaultchannel", NotificationManager.IMPORTANCE_DEFAULT
긴 텍스트를 추가한 확장 뷰를 알림에 넣을 때 (텍스트 뿐만 아니라 이미지, 버튼 등도 추가할 수 있음)
builder.setStyle(NotificationCompat.BigTextStyle()
.bigText(resources.getString(R.string.long_notification_body)))