본문 바로가기
Android

[깡샘의 안드로이드 프로그래밍] 정리 28 - FCM

by 들풀민들레 2018. 1. 6.

 

본 글은 [깡샘의 안드로이드 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책을 통해 확인해 주세요.

 

 

 

 

 

 

26장. 실시간 서버 푸시

 

26.2. Firebase Cloud Message

 

실시간 서버 푸시를 구현하는 방법이 위의 소켓 프로그램을 통한 서버와 연결을 지속한 상태에서 데이터를 송수신하는 방법 이외에 FCM(Firebase Cloud Message)을 이용하는 방법이 있습니다.

 

Firebase는 구글의 모바일 앱 개발 통합 플랫폼이며, Firebase에서 제공하는 여러 가지 서비스 중 하나가 FCM입니다. FCM은 2016년 구글 I/O 행사에서 Firebase를 개선하여 GCM(Google Cloud Message)을 대체하기 위해 선보인 서비스입니다. 이번 절에서는 FCM의 동작 원리를 살펴보고 실제 구현 방법은 실습에서 살펴보겠습니다.

 

FCM을 이용하면 앱에서 서버와 연결하고 있지 않더라도 서버의 데이터를 수신할 수 있습니다.

네트워크 연결 없이 어떻게 서버의 실시간 데이터를 얻을 수 있을까요? 이것을 이해하고 구현하기 위해서는 FCM의 동작 원리를 알아야 합니다.

FCM의 동작 원리는 두 단계로 나누어 살펴보아야 합니다. 첫 번째 단계가 앱을 위한 키를 FCM 서버를 통해 얻는 단계입니다.

 

 

① 스마트폰에 앱이 설치되는 순간 시스템에서 이 앱을 위해 Firebase 서버에 키 획득을 위한 요청을 보냅니다. Firebase 서버에 키를 위한 요청은 안드로이드 시스템에 의해 자동화되므로 개발자가 구현할 로직은 없습니다. 그렇다면 시스템은 설치 된 앱이 FCM을 이용하는지 어떻게 알고 키 요청을 하는 걸까요? 그건 이후 Step by Step 부분의 실습을 해보면 알겠지만, FCM 방법을 이용하는 앱은 FCM 방식을 위한 라이브러리와 플러그인이 설치되어야 하므로 시스템이 이를 인지하여 키 요청 을 보낼 수 있게 되는 구조입니다.

 

② Firebase 서버에서 키를 만들어 스마트폰에 전달합니다. 키가 전달되면 시스템은 인텐트를 발생해 앱의 서비스를 구동합니다. 그러면 개발자가 작성한 서비스가 실행되고 서비스 내에서 키값을 획득합니다. 물론, 이 작업이 가능해지려면 개발자가 미리 앱을 여러 절차에 맞게 Firebase 서버에 등록해 주어야 합니다. 이 작업은 이후 실습에서 해보겠습니다.

 

③ 앱에 전달된 키를 서버에 전송합니다. 실시간 데이터 푸시 기능이 필요한 곳은 서버이며, 서버에서 전달된 키를 이용하여 데이터를 전송합니다.

 

④ 서버에서는 전달된 키값을 영속화합니다. 보통 DB에 저장해 둡니다. 이렇게 하면 서버 DB에는 앱이 깔린 모든 클라이언트 스마트폰의 키가 저장됩니다.

 

두 번째 단계로 서버에서 데이터를 스마트폰에 전달하는 절차입니다. 실시간 서버 데이터 푸시가 필요한 순간인데, 앱과 서버가 소켓으로 연결되어 있다면 직접 네트워크 프로그램을 통해 데이터를 앱에 전달하면 됩니다. 하지만 FCM 같은 푸시 서비스는 소켓 연결 프로그램을 이용하는 방식이 아니고, Firebase 서버를 이용하여 데이터가 앱에 전달되게 하는 방식입니다. 즉, 앱과 서버가 소켓으로 연결되지 않아도 서버의 데이터를 앱에 보낼 수 있게 됩니다.

 

 

① 서버에서 데이터를 스마트폰에 전달하기 위해 DB에서 키를 획득합니다. 이 키는 스마트폰에 설치된 앱을 식별할 수 있는 유일성이 확보된 값입니다.

 

② DB의 키와 실제 앱에 전송하고자 하는 데이터를 Firebase 서버에 전달합니다. Firebase 서버와는 HTTP 통신이 이용되며 Firebase 서버에서 원하는 방식대로 데이터를 구성하여 요청이 이루어집니다.

 

③ Firebase 서버에서는 전달받은 키값을 식별해 어떤 스마트폰의 어떤 앱인지를 식별합니다. 결국, 키값에 의해 특정 스마트폰에 데이터를 전달할 수 있습니다. 시스템에서는 이 데이터가 전달되면 데이터를 수신해야 하는 앱을 실행해 줍니다. 이때 앱에서 실행되는 건 서비스입니다. 개발자가 앱에 데이터를 받기 위한 서비스를 만들어 두면 Firebase 서버로부터 데이터가 수신될 때마다 서비스가 실행되어 데이터를 획득합니다.

 

FCM의 동작 원리를 이해했다면 이제 구현 방법입니다. 구현 방법은 여러 설정 절차 등이 필요하므로 바로 실습을 통해 알아보겠습니다.