FCM(Firebase Cloud Messaging)

  • Firebase는 구글의 모바일 앱 개발 통합 플랫폼이며, Firebase에서 제공하는 여러 가지 서비스 중 하나가 FCM
  • FCM을 이용하면 앱에서 서버와 연결하고 있지 않더라도 서버의 데이터를 수신할 수 있습니다

FCM 클라우드 메시지의 흐름

  • 앱 서버에서 FCM Backend 서버에 클라이언트 앱에 보내고자 하는 메세지를 담은 정보와, 서버의 인증 정보 클라이언트의 토큰을 담아서 HTTP POST를 요청을 보낸다.
  • 요청을 받은 FCM Backend 서버는 요청을 통해 받은 메시지의 이상 유무에 따라 앱 서버에 적절한 응답을 보낸다.
  • 이후 FCM Backend 서버에서 여러가지(우선 순위, 클라이언트 앱과의 통신 가능 여부 등)을 고려하여 매세지를 클라이언트 앱에 보낸다.
  • 클라이언트 앱에서는 받은 메세지를 적절하게 처리하고 응답 메세지를 FCM Backend 서버로 보내게 된다.
  • 요약하면, 앱 서버에서 FCM Backend 서버에 메시지 요청을 보내고, FCM Backend 서버는 사용자 기기에서 실행되는 클라이언트 앱에 메시지를 보내게 된다.

    1. 클라이언트는 자신의 정보( 토픽 [token(device 정보를 알 수 있는 uuid 값)], 인스턴스) 를 FCM 백엔드 서버에 등록해야 한다.
    1. 메시지를 전송할 주체 (3rd-parry 서버 혹은 모바일) 는 등록된 정보를 획득해야 하며, 해당 정보로 다운스트림 메시지를 전송한다.

① 스마트폰에 앱이 설치되는 순간 시스템에서 이 앱을 위해 Firebase 서버에 키 획득을 위한 요청을 보냅 ② Firebase 서버에서 키를 만들어 스마트폰에 전달합니다 개발자가 미리 앱을 여러 절차에 맞게 Firebase 서버에 등록 ③ 앱에 전달된 키를 서버에 전송합니다. 실시간 데이터 푸시 기능이 필요한 곳은 서버이며, 서버에서 전달된 키를 이용하여 데이터를 전송합니다 ④ 서버에서는 전달된 키값을 영속화합니다. 보통 DB에 저장

FCM의 주요 특징

  • 메세지 타입

    • FCM의 메세지 타입은 알림 메시지와 데이터 메시지로 구분할 수 있다.
    • 보통 알림 메세지와 데이터 메시지를 같이 혼용해서 사용한다.

      • 예를 들어, 휴대폰 푸시 알림 메세지는 알림 메세지를 이용하고, 알림 메세지를 클릭 하였을 때 앱 내 특정 페이지로 이동이나, 어떠한 애션은 데이터 메세지를 통해서 이뤄진다.
      메세지 종류 알림 가능 여부 알림 저장 개수 알림 처리 방법
      알림 메시지 가능 여러 알림을 저장하나, OS 환경마다 다르다. 앱이 백그라운드 일 때
      데이터 메시지 가능 1개의 알림만 저장 앱이 포그라운드 일 때
  • 타켓팅

    • 단일 기기, 기기 그룹, 주제를 구독한 기기 3가지 방식으로 클라이언트 앱에 메시지를 배포할 수 있다.

      종류 대상수 설명
      단일 기기 1개 하나의 기기(앱 기준)
      기기 그룹 20개 알림 키에 허용되는 그룹
      주제 구독 1000개 등록 토큰에 구독된 기기
  • 클라이언트 앱에서 메시지 전송

    • FCM을 이용하면 앱 서버에서 클라이언트 앱으로 다운 스트림 메세지를 보낼 수 있을 뿐만 아니라, 클라이언트 앱에서 앱 서버로도 업 스트림 메세지를 보낼 수 있다.
    • 하지만 클라이언트 앱에서 앱 서버로 업 스트림 메세지를 보내기 위해서는 선행 조건이 필요하다. 그 부분은 밑에서 설명한다.