[개발일지] Firebase Cloud Messaging-3
FCM 마지막 글입니다.
이번에는 FCM API에 대해서 작성하려고 합니다. 작성하기전에 푸쉬 전송과정에 전체적인 흐름을 설명 하겠습니다.

FCM과 GCM의 처리 과정은 동일하기 때문에 위 사진으로 설명 하겠습니다.
- 사진에는 C2DM 서버로 되어있는데 C2DM은 GCM 이전에 서버명 입니다. 이 글에서는 FCM 서버라고 하겠습니다. 아무튼 app에서 FCM 서버에게 RegistrationID를 요청합니다.
- FCM서버는 app에게 RegistrationID를 발급해줍니다.
- app은 app server (우리가 구현할 서버)에 User account 와 RegistrationID를 전송합니다. User account는 앱 사용자의 식별 정보정도로 생각 하면 될 것 같습니다. app server는 전송받은 정보를 DB에 저장해 놓습니다. 여기 까지가 푸쉬 보내기 전 준비단계입니다.
- 사진에는 크롬에서 보낸다고 되어있는데 크롬을 그냥 푸쉬를 전송해야 할 외부 이벤트라고 생각하시면 될 것 같습니다. 외부 이벤트 발생시 서버는 푸쉬를 보내야 할 유저들을 정합니다.
- 정한 유저들의 RegistrationID와 전송해야할 메시지를 FCM서버에게 보내어 전송 요청을 합니다.
- FCM서버는 요청받은 RegistrationID를 이용하여 해당 app에 메시지를 전송 합니다.
이렇게 FCM 메시지 전송 흐름을 살펴 보았습니다.
이제 api로 전송하는 법을 살펴볼텐데 아래 주소에서 자세한 프로토콜을 살펴 볼 수 있습니다.
Firebase Cloud Messaging HTTP Protocol
This document provides a reference for the HTTP syntax used to pass messages from your app server to client apps via…firebase.google.com
This document provides a reference for the HTTP syntax used to pass messages from your app server to client apps via…firebase.google.com
저는 구글앱인 Postman을 이용하여 요청을 보내보았습니다.

이런식으로 헤더에는 Content-Type와 Authorization 값을 넣어주고 notificaton과 to값을 정하여 요청을 전송하면 됩니다. java에서는 HttpClient와 jackson을 이용하여 요청을 하시면 됩니다. (구글링 고고..)
헤더 값중 Authorization은 좌측 프로젝트명 옆에 설정버튼을 누르고 클라우드 메시징 메뉴에 가시면 서버키가 있습니다. 그 키를 이용하시면 됩니다.
