플랫폼 개발팀 기술 블로그

[FCM] #1. 소개 및 메시지 본문

Article

[FCM] #1. 소개 및 메시지

피랑이 2019. 1. 24. 18:06

[FCM] #1. 소개 및 메시지

[FCM] #2. Firebase 프로젝트 생성 및 Android 앱 FCM 설정

[FCM] #3. Firebase 메시지 전송

[FCM] #4. Android 메시지 처리


FCM은 Firebase 클라우스 메시징의 약자이고, 무료로 메시지를 안정적으로 전송할 수 있는 교차 플래폼 메시징 솔루션이다.

IOS, Android, Web등 기존에 메시지를 발송하려면 APNS, GCM 등 각각 환경별로 개발해야하는 불편함이 있었다.  

FCM을 이용하면 이러한 부분을 한번에 처리할 수 있다.  

구글에서는 FCM에 적극적으로 투자하고 있고,  앞으로 새로운 기능들은 모두 FCM을 통해 지원할 예정이다. 

GCM 서비스는 기존 Legacy 앱에 대한 지원 이유로 현재 버전으로만 유지하고 있다. 

주요 기능

메세지 타입, 타겟팅, 클라 앱에서 전송 3가지로 구분된다. 

메세지 타입

알림 메세지와 데이터 메세지로 구분된다. 

 타입

알림 가능 여부

 알림 저장 개수

알림 처리 방법

 알림 메세지

 O

여러 알림을 저장하나 OS 환경마다 다름

앱이 백그라운드 일 때 

 데이터 메세지

 

1개의 알림만 저장

앱이 포그라운드 일 때

보통은 알림 및 데이터 메세지를 같이 혼용하여 사용한다. 

예를 들어 휴대폰 푸시 알림은 알림 메세지,  알림을 클릭하였을 때 앱 내 특정 페이지로 이동이나, 어떠한 액션은 데이터 메세지를 통해서 이뤄진다. 

타겟팅

단일 기기, 기기 그룹, 주제를 구독한 기기 3가지 방식으로 전송 가능하다. 

 전송 방식

대상 수

설명

단일 기기

1개

 하나의 기기 (앱 기준)

기기 그룹

20개

 알림 키에 허용되는 그룹

주제 구독

1000개

 등록 토큰에 구독된 기기

클라이언트 앱에서 메세지 전송

기기에서 Firebase Connections Server로 메시지를 전송한다. 
예를 들어 기기에서 채팅 및 특정 기타 메시지 보낸다. 

작동 원리

크게 송신자, FCM, 수신자로 구분된다. 

송신자는 주로 앱서버나 백오피스 정도의 GUI 콘솔이 되고, 수신자는 우리가 흔히 쓰는 ios나 android 기기이다.

구현 방법

먼저 Firebase를 가입하고 프로젝트 생성 후 FCM을 설정한다. 
클라이언트 앱에서 Firebase 관련 라이브러리를 다운로드 받은 후에 FCM에 해당 클라이언트 앱을 등록한다. 
수신부분까지 세팅이 완료되면 Firebase 관리 콘솔을 이용하여 클라이언트에 메시지가 정상적으로 알림 처리가 되는지 확인한다.
Firebase Connection Server로 발송할 수 있는 서비스형 어플리케이션을 개발한다. 

 방법

설명

FCM SDK 설정

 - OS별로 FCM  설정

클라이언트 앱 개발

 - 클라이언트 앱에 Firebase 메시지를 수신할 수 있도록 처리

 - 메시지 처리 / 주제 구독 로직

앱 서버 개발

 - SDK, http, http v1 중 선정하여 메시지 작성 및 FCM에 발송 처리

 - 업스트림 메시징은 XMPP 프로토콜을 사용해야 함

 - XMPP(Extensible Messaging and Presence Protocol) XML에 기반한 메시지 지향 미들웨어용 통신 프로토콜

메시지 정보

FCM은 공통 메시지 옵션 외에 IOS 및 Android 별로 배지, 사운드, 아이콘 등 다양한 메시지 옵션을 제공한다. 

Firebase 콘솔에서 테스트 형태로 메시지 전송 가능하다.

메시지 유형

알림 메시지와 데이터 메시지로 구분된다. 

 유형

설명

 Key-Value 구조

 예시

(Http V1 Api 기준)

 알림 메시지

 - 알림 표시 메시지

 - FCM SDK에서 자동 처리됨

 - 데이터 메시지 포함 가능

 - 미리 정의됨

 {

  "message":{

    "token":"bk3RNwTe3H0:CI2k_...",

    "notification":{

      "title":"Portugal vs. Denmark",

      "body":"great match!"

    }

  }

}

 데이터 메시지

 - 클라이언트 앱에서 처리

 - 앱 서버와 커스텀 키 설정

 - 정의 해야함

 {

  "message":{        "token":"bk3RNwTe3H0:CI2k_HHwgI...",

    "data":{

      "Nick" : "Mario",

      "body" : "great match!",

      "Room" : "PortugalVSDenmark"

    }

  }

}

앱 상태에 따른 처리

백그라운드 

 알림 메시지가 알림 목록으로 전송 

포그라운드 

 콜백이 메시지를 처리 


클라이언트 앱 OS 별 콜백 처리

IOS

 didReceiveRemoteNotification:

Android

 onMessageReceived()

 Web 및 자바스크립트

 onMessage()


미리 정의된 키의 전체 목록 참조 문서 


다음 주제는 Firebase 프로젝트 생성과 Android Studio를 이용하여 앱에 FCM 설정하고 
Firebase 콘솔에서 메시지를 발송한 다음 애뮬레이터를 통하여 메시지가 수신이 되는지 확인한다. 


Comments