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)))