티스토리 뷰

반응형
SMALL

 

알림 배지 아이콘 숫자 컨트롤 하기

 

운영업무를 하고 있는 상황에서 특이한 요건이 들어와 기록 한다.

 

현재 운영중인 앱은 서버에서 내려오는 푸시와 로컬에서 생성하는 푸시 두가지가 존재 한다.

 

여기서 요건은 

 

서버에서 받는 푸시는 알림 아이콘이 표시 되야 하고

 

로컬에서 받는 푸시는 알림 아이콘을 에 숫자에 반영 되지 않게 해달라는 요건 .. 

 

반응형

 

https://developer.android.com/training/notify-user/badges?hl=ko

 

배지를 표시하고 안하고의 차이는 단순하게 Notification 의 채널 생성과 동시에 플레그를 변경 해주면 노출 해 줄 수 있다.

( 8.0 이전에서는 기본 노출인가 ? 지원되는 플레그가 없는듯 ? )

 

val builder: NotificationCompat.Builder
val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager

//버전 오레오 이상일 경우
builder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    manager.createNotificationChannel(
        NotificationChannel(
            CHANNEL_ID,
            CHANEL_NAME,
            NotificationManager.IMPORTANCE_DEFAULT
        ).apply { setShowBadge(true) }
    )
    NotificationCompat.Builder(this, CHANNEL_ID)
} else {
    NotificationCompat.Builder(this)
}

 

.apply { setShowBadge(true) }

 

근데 여기서 추가로 

푸시 데이터로 카운트를 넘겨 줄 테니 현재 디바이스에 노출되고 있는 푸시 갯수와 상관 없이 푸시 데이터안에 있는 카운트가 노출 되도록 해달라고 .. 

 

Android Develop 에서 제공하는 알림 카운트 컨트롤의 경우 

 

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
            .setContentTitle("New Messages")
            .setContentText("You've received 3 new messages.")
            .setSmallIcon(R.drawable.ic_notify_status)
            .setNumber(messageCount)
            .build()
.setNumber(messageCount)

 

위 처럼 적용하면 카운트를 적용할 수 있다고 .. 한다 

 

그러나 동작이 잘 되지 않는다. 

어떤 디바이스에서는 그냥 스테이터스바에 노출된 푸시 갯수만큼 노출되고 

어떤 디바이스에서는 처음에는 셋팅 되던가 싶더니 다음 푸시 부터는 +1 씩 증가만 한다 .. 

 

그럼 다시 푸시 동작 개념을 좀 봐야 겠다 .

 

FCM 푸시는 SDK 내에서 이벤트를 받아 FirebaseMessagingService를 통해 onMessageReceived 메소드로 부터 이벤트를 캐치해서 처리 할 수 있다.

 

여기서 로그를 찍어보니 Foreground 상태에서는 로그가 잘 찍히는데 

Background 상태일 때, ( 앱이 죽어있을 때 ? )

는 로그가 찍히지 않더라,

 

앱이 실행되어 있지 않은 경우에는 데이터에 Notification 키가 있는 경우 SDK 내에서 처리하고 onMessageReceived 로는 이벤트가 오지 않는 다고 한다.

 

Firebase Document FCM

 

 

그럼 해결방법은 

Notification 키를 제거 하면 onMessageReceived 를 무조건 타기 때문에 여기서 컨트롤 할수 있다.

 

현재 운영중인 앱은 

사일런트 푸시 ( Silent Push )도 제공되기 때문에 

 

Notification 키가 없이 보내는 데이터 포멧은 사일런트 푸시 형식인데 안에 데이터를 바라보고 사일런트 푸시로 사용할 것인지 

상태바에 Notification을 셋팅해서 보여줄 것인지를 구분해서 처리해야 겠다.

 

2023.05.03 - [Android/Notification] - [ Notification #3 ] 푸시 알림 아이콘 숫자 업데이트 하기

반응형
LIST
댓글