FCM은 Firebase Cloud Messaging 의 약자로 교차 플랫폼 메세징 솔루션입니다.
FCM는 Socket
과 SSE
기술과 비교되는데 FCM를 사용하는 이유는 플랫폼에 종속되지 않고 메세지나 푸시 알림을 구현할 수 있기 때문입니다.
만약 Socket 과 SSE 에 대한 정보를 더 알고 싶다면 해당 포스팅 을 참고해주세요.
기존 ios
나 Android
, Web
각각 알림을 보내기 위해 각각의 플랫폼에 대한 환경을 구성해주어야 하는데 이를 하나로 통합한 솔루션입니다.
서버에서 푸시 알림을 받으려면 항상 서버와 연결되어 있어야 하는데 이는 네트워크
및 배터리 소모
에 문제가 됩니다.
이러한 문제를 해결하기 위해 클라이언트
와 백엔드
사이에 FCM 서버
를 둠으로써 클라이언트는 직접 서버와 연결되어있지 않아도되며, 이는 위의 문제를 해결할 수 있습니다.
이를 그림으로 표현하면 아래의 그림과 같습니다.
적은 네트워크와 효율적인 배터리 사용으로 인해 현재 많은 서비스 회사에서 FCM을 사용하고 있습니다.
FCM은 Google에서 제시하는 사용법을 숙지하고 있으면 손쉽게 구현할 수 있습니다.
FCM는 서버에서 데이터를 푸시했을 때 클라이언트 플랫폼에 데이터를 전송해주어야 하는데 이를 서버 푸시
라고 합니다.
기존에 클라이언트는 서버에서 데이터를 받으려면 네트워크 연결이 필수인데, 언제 데이터가 전송될지 모르게 때문에 지속적으로 네트워크에 연결되어있어야 합니다.
문제는 한 달에 한번만 오는 데이터를 받기위해 한달 내내 서버와 연결되어 있어야 하는 비효율성 때문에 클라우드 메세징
을 이용하여 서버가 데이터를 클라이언트에 직접 전달하는게 아니라 FCM 서버
를 거쳐서 클라이언트에 전달하는 방식으로 사용합니다.
때문에 클라이언트는 네트워크 연결을 유지하지 않더라도 메세지를 받을 수 있습니다.
GCM 은 Google Cloud Messanging 의 약자로 구글에서 제공되며 Server 와 App 간의 푸시 메세지를 보낼 수 있는 서비스입니다.
이후 Firebase 에 인수되면서 FCM 으로 명칭이 바뀌었으며 앱 뿐만 아니라 웹 , ios 등 모든 플랫폼에서 사용 가능한 FCM SDK
서비스를 제공하고있습니다.
따라서 현재GCM SDK
와 FCM SDK
두 버전이 있는데 FCM SDK
를 사용할 것을 권장하고 있습니다.
클라이언트는 Sender ID
를 생성하여 FCM 서버
에게 등록을 요청합니다.
FCM은 클라이언트에서 받은 Sender ID
를 이용하여 Registration Token
을 생성하여 반환합니다.
클라이언트는 전달받은 Registration Token
을 백엔드에게 전달하고 , 전달받은 백엔드 서버는 이 토큰을 저장합니다.
백서버는 Registration Token
과 API Key
, 메세지를 이용해 FCM 서버
에게 메세지를 전송합니다.
FCM 서버
는 백엔드 서버에서 받은 데이터를 특정 기기에 메세지를 전송합니다.
공식 홈페이지로 구현 코드 및 부족한 설명은 해당 링크를 참고해주세요.
https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko
참고 블로그 1 : 참고 블로그
참고 블로그 2 : https://codinghero.tistory.com/50
참고 블로그 3 : 참고 블로그