11장. 파이어베이스 클라우드 메시징 - 동작 원리

Jamezz Dev·2020년 7월 22일
2

firebase

목록 보기
4/4

1.푸시서비스와 클라우드 메시징

푸시서비스란

  • 서버는 클라이언트가 요청하지 않더라도 필요한 정보가 있으면 클라이언트에 전송하는 것을 말한다. 예를 들면 카카오톡 메시지, 광고 알림과 같이 푸시를 이용한 서비스라고 할 수 있다.

FCM(Firebase Cloud Messaging) 이란

  • 파이어베이스 클라우드 메시징으로, 앱 서버에서 구글에서 제공하는 FCM을 이용하여 사용자 디바이스가 설치된 앱 단위로 메시지를 전송할 수 있는 서비스이다.

targetSdkVersion 이란?
Android Studio 프로젝트의 앱 레벨 build.gradle 파일에 targetSdkVersion 을 명시할 수 있다. 예를 들어 targetSdkVersion 이 API Level 23 이고 단말은 API Level 24인 경우 앱에서는 API Level24 에 대한 준비가 되어있지 않기 때문에 앱 동작에 문제가 있을 수 있다. 이러한 문제가 발생되지 않도록 앱의 targetSdkVersion으로 동작한다.

FCM 과 GCM의 차이점

  • 기존의 GCM 과 다르게 FCM에서는 앱 서버를 구현하지 않은 상태에서 푸시 알림 메시지를 보낼 수 있도록 Notification Console GUI를 제공하고 강력해진 메시지 타겟팅 과같은 기능이 추가가 되었다

  • FCM 구성

  • GCM 구성

FCM 주요 용어

클라이언트 앱

  • 안드로이드 단말에서 FCM을 사용하는 앱

앱 서버

  • 클라이언트 앱에 전달되는 토큰을 관리하고 클라이언트 앱에 메시지를 전달할 수 있도록 FCM에 메시지를 전달한다.
  • 토큰은 FCM에서 발급해주는 것으로 등록된 클라이언트 앱을 구분하기 위한 용도로 사용된다.

API KEY

  • Google Developers Console에서 발급 받은 API키로 앱서버에 저장되어 관리되고 HTTP 프로토콜로 메시지를 보낼때에는 Post 헤더에 포함된다.
    -클라이언트 앱의 코드에 API키를 포함하지 않도록 주의한다.

Sender ID

  • FCM 등록으로 발급된 Google-services.json 파일의 Project_number에 해당하는 값이다.
  • 클라이언트 앱에서 Registration Token을 발급 받기 위해 FCM에 전달하는 값으로 사용된다.

Application ID

  • Appliation ID 는 Android 에서 Package Name 을 의미한다.
  • Package Name은 앱이 구분하는 단위로 하나의 앱은 중복되지 않은 Package Name을 가져야 한다.

Registration Token

  • Fcm에서 발급 받은 토큰
  • 앱 서버에 전달하여 클라이언트 앱에서 메시지 알림을 전송할 때 사용한다.

파이어베이스 클라이언트 메시징의 구성

다운 스트림 메시지와 업스트림 메시지

1. 다운스트림 메시지

  • http 프로토콜로 앱서버에서 구현하게 되면 단말에 메시지를 보내는 단방향 통신만을 지원하게 된다.
  • 동기방식, plain Text, JSON 형식

2. 업스트림 메시지

  • xmpp로 구현할 경우에는 단말에 메시지를 보내는 것 뿐만 아니라 단말에서 메시지를 서버로 전송할 수 있는 것까지 가능합니다.
  • 카카오톡과 같은 채팅 서비스를 지원하는 경우에는 양방향이 가능해야 한다.
  • 비동기방식, JSON 암호화 ,양방향 메시지

파이어 베이스 클라우드 메시징의 동작원리

1.클라이언트 앱에서 Sender ID를 이용해 등록을 요청한다

2. FCM은 클라이언트 앱에서 전달받은 SenderId를 토대로 Registration Token 을 클라이언트 앱에서 발급한다

3. 클라이언트 앱은 FCM에서 전달받은 Registration Token을 앱서버에 전달하고 이를 전달받은 앱 서버는 Registration Token을 저장한다

4. 앱서버는 Registration Token , API Key , 전송할 메시지를 이용하여 GCM에 메시지를 전송한다.

5.FCM은 앱서버로 부터 전달받은 메시지를 해당 클라이언트 앱에 메시지를 전송한다.

profile
💻디지털 노마드를 🚀꿈꾸는 🇯🇲자메즈 🐥개발자 입니다.

0개의 댓글