본문 바로가기
서버/서버이론

[Server] FCM이란?

by 코딩히어로 2021. 12. 12.
728x90

FCM이란 Firebase Cloud Messaging의 약자로 Google에서 지원하는

 

무료 메시지 전송 서비스를 의미합니다.

 

FCM은 Google에서 제시하는 사용법만 숙지하면 간단하게 사용 가능하며

 

현재 카카오톡, 네이버, 게임 등 많은 분야에서 알 림메 세지를 사용자에게 전달하기 위해 활용되고 있습니다.

 

FCM을 사용하기 위해서는 먼저 개념을 먼저 알고 사용하는 것이 중요합니다.

 

 

 

 

1) GCM과 FCM


FCM의 처음 시작은 GCM으로부터 시작됩니다.

 

즉 FCM이 아닌 GCM이라는 이름으로 불리며 메시지 전송 서비스를 시작했던 것이죠.

 

GCM은 Google Cloud Messaging의 약자로 구글에서 제공하는 Server와 Client App 간에

 

푸시 메시지를 보낼 수 있는 서비스입니다.

 

GCM 서비스는 2012년 6월에 처음 발표되며 세상에 알려지기 시작하고,

 

이후 Firebase 진영에 인수되면서 FCM으로 명칭을 변경하게 되었습니다.

 

예전부터 메시지 전송 서비스를 사용해오던 개발자들에게는 아직까지도 GCM이 익숙합니다.

 

물론 GCM SDK를 사용할 수 있지만 FCM SDK를 쓸 것을 강력 권장하고 있는 상황입니다.

 

 

 

2) FCM 원리


파이어 베이스 클라우드 메시징은 서버에서 특정 상황이나 데이터가 발생할 때 앱에

 

알림을 전달하는 기능으로 은행 계좌에서 이체가 발생하는 상황을 가정하면,

 

계좌 이체는 서버에서 발생하므로 사용자 폰에 설치된 앱에 이 소식을 전달해야 합니다.

 

이처럼 서버에서 어떠한 상황이 발생할 때 데이터를 앱에 전달하는 것을 서버 푸시라고 합니다.

 

서버에서 어떤 데이터를 앱에 전달하려면 네트워크 연결은 필수입니다.

 

앱은 서버에서 데이터가 언제 송신될지 모르기 때문에 서비스 컴포넌트로 네트워크에

 

항상 연결되어 있어야 하는 것입니다.

 

문제는 백그라운드 제약 때문에 앱이 포그라운드 상황이 아니라면 서버와 연결을 지속할 수 없다는 것입니다.

 

그리고 만약 한 달에 한두 번만 데이터를 서버에서 앱으로 전달하더라도 앱과 서버가

 

이 한두 번의 메시지를 위해 한 달 내내 연결되어 있어야 하는 비효율성이 발생합니다.

 

하지만 클라우드 메시징은 서버의 데이터를 앱에 직접 전달하지 않고

 

FCM 서버를 거쳐서 앱에 전달하는 방식으로 클라우드 메시징을 이용하면 서버와

 

앱이 네트워크 연결을 지속해서 유지하지 않아도 되며 앱이 포그라운드 상황이

 

아니라고 하더라도 데이터를 받을 수 있습니다.

 

클라우드 메시징은 크게 2단계로 분류하여 볼 수 있습니다.

 

 

1단계 토큰 발행

 

FCM 서버에 전달된 데이터를 특정 기기의 앱에 전달하기 위해서는 클라우드

 

메시징을 이용하는 앱을 구별할 식별 ID값이 필요합니다.

 

이 식별 ID를 토큰이라고 부르며 안드로이드 시스템이 FCM서버와

 

연동되는 과정에서 getinstance() 함수를 호출함으로써 발급받습니다.

 

 

2단계 서버에서 FCM 알림 전송

 

서버에서는 발급받은 식별 ID를 통해 해당 기기에 접근할 수 있습니다.

 

 

토큰 발행 당시 저장해놓은 식별 ID를 FCM서버에 메시지와 함께 전달함으로써

 

해당 기기에 FCM 메시지가 전달됩니다.

 

FCM 설정에 관한 내용은 Firebase 공식 홈페이지에 너무 잘 나와있기 때문에

 

해당 내용을 그대로 따라서 하기만 하면 어렵지 않게 구현이 가능합니다.

 

https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko

 

앱 서버 전송 요청 작성  |  Firebase Documentation

의견 보내기 앱 서버 전송 요청 작성 Firebase Admin SDK 또는 FCM 앱 서버 프로토콜을 사용하여 메시지 요청을 작성하고 다음과 같은 타겟 유형으로 전송할 수 있습니다. 주제 이름 조건 기기 등록 토

firebase.google.com

 

728x90
반응형

'서버 > 서버이론' 카테고리의 다른 글

[Server] 리눅스 소켓이란?  (7) 2022.01.13
[Server] 트랜잭션이란?  (4) 2022.01.07
[Server] 로드 밸런싱이란?  (0) 2022.01.03
[Server] MQTT 서버란?  (0) 2021.03.09
[Server] 서버 어디에 구축할것인가  (0) 2020.10.14

댓글