Android/Firebase

FCM(Firebase Cloud Messaging)

밥굿 2024. 3. 12. 00:08
  • FCM(Firebase Cloud Messaging)이란?
    • 안정적인 메시지를 전송할 수 있는 교차 플랫폼 메시징 솔루션
    • 모든 사용자, 그룹핑된 사용자에게 메시지 전송 가능 
    • 요금 정책 미적용(무료)



  • FCM을 사용하는 이유
    • 플랫폼 종속없이 교차하여 전송 가능(APNS, GCM 개별 개발 불필요, Android & iOS & Mobile Web 등의 다양한 플랫폼을 모두 커버)
    • App Server만을 활용한다면 end point 수신자가 계속 접속 상태여야하므로 배터리와 네트워크 사용 과다 발생(클라우드 메시징 서버 거쳐서 전송하는 이유)



  • FCM 메시지 유형
    •  





유형 전송 방식 데이터 구성
Notification Message
(알림 메시지)
  1. App Server 또는 신뢰가능한 환경(Firebase Adamin SDK or FCM 서버 프로토콜 이용)에서 FCM 백엔드로 메시지 전달 요청 
  2. Firebase Console에서 메시지 전달 요청
{
  "message":{
    "token":"P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}



  • 데이터 페이로드가 있는 경우
{
  "message":{
    "token":"P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}
Data Message
(데이터 메시지)
App Server 또는 신뢰가능한 환경(Firebase Adamin SDK or FCM 서버 프로토콜 이용)에서 FCM 백엔드로 메시지 전달 요청 
*커스텀 키-값 쌍에 예약어를 사용하지 않도록 합니다. 예약어에는 'from', 'notification', 'message_type', 또는 'google'이나 'gcm'으로 시작하는 모든 단어가 포함됩니다.
{
  "message":{
    "token":"P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

º 처리 방식




메시지 유형 포그라운드 백그라운드
알림 onMessageReceived 작업표시줄
데이터 onMessageReceived onMessageReceived
알림(데이터 페이로드 포함) onMessageReceived 알림 : 작업표시줄
데이터 : 인텐트 부가 정보

 

  • FCM 동작 원리
    • 동작 주체
      • 송신자 : App Server / 신뢰할 수 있는 환경 / Firebase Console
      • FCM 백엔드 : 메시지 요청 처리 서버
      • 수신자 : Mobile 기기 / Mobile Web
       

 

 

  • 프로젝트가 다음 요구사항을 충족하는지 확인합니다.
    • API 수준 16(Jelly Bean) 이상 타겟팅  
    • Gradle 4.1 이상 사용
    • 다음 버전 요구사항을 충족하는 Jetpack(AndroidX) 사용
      - com.android.tools.build:gradle v3.2.1 이상
      - compileSdkVersion 28 이상

 

참고 : Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정(공식 문서)