카테고리 없음

Firebase Cloud Messaging (FCM)

코코넛딩 2025. 5. 19. 17:52

1. 메시지 유형 : notification, data

1. Notification message

  • display message로 생각될 수 있다.
  • 이 메세지는 FCM SDK가 자동으로 처리한다.
  • 미리 정의된 키 세트(사용자에게 표시할 키 세트)를 포함하고 있다.
  • 선택적 데이터 페이로드를 포함할 수 있다.
  • 백그라운드 상태에서 notification message 수신하면  FCM SDK가 자동으로 시스템 알림 영역에 표시합니다.
  • 최대 페이로드 크기는 4096 바이트이다.
    • 페이로드 : 데이터를 전달하는 내용 또는 실제 데이터를 의미한다.
  • 전송 방법
    • Cloud Functions 또는 앱 서버와 같은 신뢰할 수 있는 환경에서 Admin SDK 또는 HTTP v1 API를 사용합니다.
      • Cloud function
        • 백그라운드 이벤트, HTTPS 요청, Admin SDK 또는 Cloud Scheduler 작업에 의해 트리거 되는 이벤트에 응답하여 백엔드 코드를 자동으로 실행할 수 있는 서버리스 프레임워크입니다.
      • Admin SDK
        • 권한이 있는 환경에서 Firebase와 상호작용하여 여러 작업을 수행할 수 있는 서버 라이브러리 집합입니다.
        • Realtime Database나 Firebase Cloud Messaging 등 여러 작업을 다룰 수 있습니다. 
        • Firebase Cloud Messaging 서버 프로토콜에 간단한 접근법을 제공해서 코드로 Firebase Cloud Messaging 메세지를 전송할 수 있게합니다.
      • HTTP v1 API
        • Firebase 프로젝트는 앱 서버 또는 신뢰할 수 있는 환경에서 Firebase Server API를 호출하는 데 사용할 수 있는 Google 서비스 계정을 지원한다.
        • 로컬에서 코드를 개발하거나 온프레미스에 애플리케이션을 배포하는 경우 이 서비스 계정을 통해 가져온 사용자 인증 정보를 사용하여 서버 요청을 승인할 수 있습니다.
        • 서비스 계정을 인증하고 Firebase 서비스에 엑세스 하도록 승인하려면 JSON 형식의 비공개 키 파일을 생성해야 합니다.
        • 서비스 계정의 비공개 키 파일 생성하는 방법
          • Firebase Console에서 설정 > 서비스 계정을 엽니다.
          • 새 비공개 키 생성을 클릭한 다음 키 생성을 클릭하여 확인합니다.
          • 키가 들어있는 JSON 파일을 안전하게 저장합니다.
    • notification 키를 설정합니다.
    • 선택사항으로 데이터 페이로드를 추가할 수 있습니다.
    • 항상 축소형입니다.

2. Data message

  • 클라이언트 앱이 데이터를 처리해야한다.
  • 데이터 메세지는 커스텀 키-값 쌍만 포함하며, 미리 정의된 키는 없습니다.
  • 최대 페이로드 크기는 4096 바이트이다.
  • 백그라운드에서도 포그라운드에서도 onMessageReceived에서 처리합니다.
    • 전송 방법
      • Cloud Functions 또는 앱 서버와 같은 신뢰할 수 있는 환경에서 AdminSDK 또는 FCM 서버 프로토콜(FCM HTTP v1 API)을 사용합니다.
      • 전송 요청에서 data 키를 설정합니다.

 

2. Notification Message + Data Message

  • 프로그램을 통해 또는 Firebase 콘솔을 통해 알림 메시지를 보내면서 선택적인 커스텀 키-값 페이로드를 포함할 수 있습니다.
  • Firebase console에서 고급 옵션에서 커스텀 데이터 필드를 사용할 수 있습니다.
  • notification message와 data message를 같이 보낼 떄 알림 페이로드 표시는 FCM에서 처리하고 데이터 페이로드는 클라이언트 앱에서 처리합니다.
  • Notification Message와 Data Message를 같이 보낼 경우 백그라운드에 있는지 포그라운드에 있는지에 따라 달라집니다.
    • 백그라운드 상태
      • 앱은 notification 페이로드를 notification tray에 표시합니다.
      • 사용자가 알림을 탭하면 데이터 페이로드를 처리합니다.
    • 포그라운드 상태
      • 앱은 메세지 객체를 수신하며, Notification payload와 data payload 모두 앱에서 사용할 수 있는 상태로 받습니다.

 

3.