Android

[안드로이드/메시징] Message Notification

gangmini 2023. 4. 15. 01:07
반응형

Message Notification

  • 안드로이드 9.0에서 새롭게 추가
  • 다자간의 메시지 내용을 표시하는 용도로 사용 (다자간의 채팅, 메시지를 주고 받는 것 같은 화면을 제공)
binding.button.setOnClickListener {
    // 메시징 notification은 안드 9.0부터 시작하므로 버전별로 분기
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        val builder = getNotificationBuilder("message", "message style")
        builder.setContentTitle("Message Style")
        builder.setContentText("Message Style Notification")
        // 메세지 아이콘
        builder.setSmallIcon(android.R.drawable.ic_input_delete)

        // 채팅 형식의 화면을 제공 -> 사용자를 나타내는 객체를 만들기
        val personBuilder1 = Person.Builder() // 사용자 객체 만들기
        val icon1 = IconCompat.createWithResource(this, android.R.drawable.ic_media_next)
        personBuilder1.setIcon(icon1) // 사용자 객체에 아이콘 설정
        personBuilder1.setName("정대만") // 사용자 이름 설정
        val person1 = personBuilder1.build()

        val personBuilder2 = Person.Builder() // 사용자 객체 만들기
        val icon2 = IconCompat.createWithResource(this, R.mipmap.ic_launcher)
        personBuilder2.setIcon(icon2) // 사용자 객체에 아이콘 설정
        personBuilder2.setName("서태웅") // 사용자 이름 설정
        val person2 = personBuilder2.build()

        val messageStyle = NotificationCompat.MessagingStyle(person1) //person2 를 넣어도 동일하게 작동
        messageStyle.addMessage("내 이름은 정대만 포기를 모르는 남자지", System.currentTimeMillis(), person1) // 메시지 내용과 시간을 넣어줌
        messageStyle.addMessage("왕옹왕", System.currentTimeMillis(), person2)
        messageStyle.addMessage("이제 내눈엔 림밖에 보이지 않는다", System.currentTimeMillis(), person1)
        messageStyle.addMessage("왕옹왕", System.currentTimeMillis(), person2)

        builder.setStyle(messageStyle)


        val notification = builder.build()
        val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        manager.notify(10, notification)

    }
}

💡 val messageStyle = NotificationCompat.MessagingStyle(person1) 
=> person1 을 넣는 것과 person2 를 넣는것에는 무슨 차이가 있을까? 동일하게 동작하는 것 같은데 내부적으로 어떤 차이가 있는지 모르겠다.
반응형