개발

안드로이드와 iOS에서의 FCM 수신 문제

레란희 2024. 8. 29. 11:36

문제상황

- FCM 메시지를 받을 때 안드로이드에서는 notification 없이 data만 와야 하고, iOS는 notification을 받아야 했음. 

 

방법 1.

백엔드에서 플랫폼 별로 메시지 구조를 다르게 해서 준다.

https://firebase.google.com/docs/cloud-messaging/concept-options?hl=ko#example-notification-message-with-platform-specific-delivery-options

 

FCM 메시지 정보  |  Firebase 클라우드 메시징

Google I/O 2023에서 Firebase의 주요 소식을 확인하세요. 자세히 알아보기 의견 보내기 FCM 메시지 정보 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Firebase 클라

firebase.google.com

 

방법 2.

백엔드에서는 notification, data 둘 다 보내고 안드로이드에서 FCM 메시지에서 notification 관련 데이터를 삭제한다.

아래 코드를 테스트하진 않았음 (...)

override fun handleIntent(intent: Intent?) {
    
    val new = intent?.apply {
        val temp = extras?.apply {
            keyset()?.forEach { key ->
                if(key.startsWith(NOTIFICATION_PREFIX) || key.startsWith(NOTIFICATION_PREFIX_OLD)) {
                    //notification 관련 데이터는 삭제
                    remove(key)
                }
            }
        }
        replaceParam(temp)
    }
    
    super.handleIntent(new)

}

 

참고 링크 : https://medium.com/@jms8732/background에서-onmessagereceived가-호출-안되는-현상에-관하여-7595df624d91