티스토리 뷰

반응형

용어


FCM Firebase Cloud Messaging
GCP Google Cloud Platform
FCM  백엔드 클라이언트 앱에 메시지를 보내기 위한 서비스
클라이언트 앱 사용자 단말에 설치된 앱
Push Server FCM 백엔드에 메시지 Push 요청을 보내는 서비스
Device Registration Token 클라이언트 앱이 서버에 등록한 Device를 특정할 수 있는 Token
XMPP Extensible Messaging and Presence Protocol

구성


FCM을 사용하기 위해서는 FCM 백엔드와 Push Server의 구성요소가 필요하다.

FCM 백엔드

사용자 기기에서 실행되는 클라이언트 앱에 푸시 메시지를 보내는 역할을 한다. 푸시를 보내기 위해서는 먼저 FCM 백엔드에 프로젝트를 생성를 생성해야 한다. 일반적으로 같은 Firebase 리소스를 공유하는 경우 모든 앱을 동일한 프로젝트에 등록한다. FCM 백엔드의 프로젝트는 GCP의 프로젝트를 내부적으로 생성한다.

Push Server (Message building and targeting)

FCM 백엔드에 메시지 푸시 요청을 보내는 역할을 한다.일반적인 Server를 이용해 구현하거나 Firebase용 Cloud Functions등을 이용해 구현할 수 있다.

5228 포트를 이용해 메시지를 수신하며 5229, 5230 포트를 사용하기도 한다. 발신을 위해서는 FCM 백엔드의 IP가 주기적으로 변경되기 때문에 따로 제한을 두지 않는 편이 좋다. 꼭 IP 제한이 필요하다면 아래 링크한 문서 내의 모든 IP를 허용해야 하며 주기적으로 업데이트를 해야 한다.

https://ipinfo.io/AS15169

 

AS15169 Google LLC - IPinfo.io

Get Started Utilize our APIs to get information on any IP address including geolocation, ASN and hostname. It is forever FREE for up to 1000 requests per day. SignUp for free No Credit card required

ipinfo.io

만약 NAT를 사용한다면 5228, 5229, 5230 포트에 대해 30분 이상의 타임아웃을 설정해야 안정적인 서비스가 가능하다. APN을 통해 알림을 수신하는 경우 다음 문서의 포트를 허용해야 한다.

https://support.apple.com/en-ph/HT203609

 

If your macOS and iOS clients aren't getting Apple push notifications

Learn what to do if your macOS and iOS clients don’t see Apple push notifications when connected to a network.

support.apple.com

Push Server 구현을 위해서는 다음의 요구사항을 만족해야 한다.

  • 올바르게 형식이 지정된 메시지 요청을 보낼 수 있어야 한다.
  • 서버 승인 사용자 인증 정보와 Device Registration Token을 안전하게 저장할 수 있어야 한다.
  • XMPP 프로토콜을 사용하는 경우 각 메시지를 고유하게 구별하기 위해 ID를 생성할 수 있어야 한다.
  • 재요청을 위해 exponential backoff를 구현해야 한다.
 

Exponential Backoff

Google HTTP Client Library for Java

googleapis.github.io

FCM Server Protocol

FCM HTTP v1 API

여러 플랫폼에서 메시지를 보낼 수 있는 유연한 최신 프로토콜이며 이 프로토콜의 사용을 권장한다.

기존 프로토콜에 비해 다음의 이점이 있다.

  • 액세스 토큰을 통한 보안 향상
  • 여러 플랫폼에서 보다 효율적인 메시지 맞춤 설정
    • 메시지 본문에 여러 플랫폼이 공통으로 사용할 수 있는 메시지와 플랫폼 별 재성의 메시지를 포함할 수 있다.
  • 새 클라이언트 플랫폼 버전을 위한 확장성 강황

명세는 다음 페이지를 참고한다.

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages

 

REST Resource: projects.messages  |  Firebase

body string The notification's body text.

firebase.google.com

Firebase Admin SDK 라이브러리는 FCM HTTP v1 API를 기반으로 동작한다.

HTTP

JSON Key-Value 쌍으로 구성된 HTTP 헤더와 본문을 포함하는 POST 요청을 보낸다. 공식 문서에서는 HTTP에서 HTTP v1으로의 마이그레이션을 권장하고 있다.

명세는 다음 페이지를 참고한다.

https://firebase.google.com/docs/cloud-messaging/http-server-ref

 

Firebase 클라우드 메시징 HTTP 프로토콜  |  Firebase

이 문서에서는 Firebase 클라우드 메시징을 통해 앱 서버에서 클라이언트 앱으로 메시지를 전달하는 데 사용되는 HTTP 구문의 참조를 제공합니다. FCM의 기존 HTTP API를 사용하는 앱은 HTTP v1 API로의 마이그레이션을 고려해야 합니다. v1 API의 이점에 대한 자세한 내용과 마이그레이션 안내는 마이그레이션 가이드를 참조하세요. 기존 HTTP 프로토콜을 사용할 때는 앱 서버가 모든 HTTP 요청을 이 엔드포인트로 연결해야 합니다. htt

firebase.google.com

XMPP

기기에서 서버로 업스트림 메시지를 보낼 필요가 있는 경우에는 해당 프로토콜을 구현해야 한다.

명세는 다음 페이지를 참고한다.

https://firebase.google.com/docs/cloud-messaging/xmpp-server-ref

 

Firebase 클라우드 메시징 XMPP 프로토콜  |  Firebase

이 문서에서는 앱 서버, 클라이언트 앱, Firebase 클라우드 메시징(FCM) 간에 메시지를 전달하는 데 사용되는 XMPP 구문에 대한 참고사항을 제공합니다. 앱 서버는 다음 엔드포인트에 연결해야 합니다. // Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236 사용 가능한 매개변수와 옵션은 다음과 같은 카테고리로 분류됩니다. 다운스트림 메시지 구문 이 섹션에서

firebase.google.com

HTTP vs XMPP

HTTP XMPP
동기 메시징 비동기 메시징
HTTP POST XMPP 메시지에 캡슐화
다운스트림 전용 업스트림 및 다운스트림 지원
JSON 및 일반 메시지 지원 JSON 지원
멀티캐스트 다운스트림 지원 멀티캐스트 미지원
전송확인 불가 Android와 Chrome 클라이언트 앱의 경우 전송 확인 가능

제공 라이브러리

FCM용 Firebase Admin SDK를 제공한다. 이 SDK는 Node.js, JAVA, Python, C#, Go 언어를 지원하며 내부적으로 FCM HTTP v1 API를 사용해 다음의 기능을 제공한다.

  • FCM 주제에 대한 기기 구독 및 구독 취소
  • 개별 기기에 메시지 보내기
  • 주제 및 하나 이상의 일치하는 조건문에 메시지 보내기
  • 기기에서 주제 구독 및 구독 취소
  • 다양한 타겟 플랫폼에 맞는 메시지 페이로드 구성
  • Node.js SDK의 경우 기기 그룹에 메시지를 보내는 메소드 제공

언어에 따라 지원하는 기능은 다음 페이지를 참고한다.

https://firebase.google.com/docs/admin/setup

 

서버에 Firebase Admin SDK 추가  |  Firebase

Admin SDK를 사용하면 관리자 권한 환경에서 Firebase와 상호 작용하여 다음과 같은 작업을 수행할 수 있습니다. 전체 관리자 권한으로 실시간 데이터베이스 데이터를 읽고 씁니다. FCM 서버 프로토콜에 대한 간단한 대안적인 접근법을 사용하여 프로그래매틱 방식으로 Firebase 클라우드 메시징 메시지를 전송합니다. Firebase 인증 토큰을 생성하고 검증합니다. Cloud Storage 버킷과 같은 Google Cloud Platform 리소스

firebase.google.com

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함