Firebase 클라우드 메시징

FCM(Firebase Cloud Messaging)은 모바일 앱과 서버 애플리케이션 간의 메시징을 용이하게 하는 서비스입니다. 이 문서에서는 FCM 작동 방식에 대한 개요를 제공하고 앱에서 FCM을 사용할 수 있도록 Google 서비스를 구성하는 방법을 설명합니다.

Firebase Cloud Messaging hero image

이 항목에서는 Firebase Cloud Messaging이 Xamarin.Android 앱과 앱 서버 간에 메시지를 라우팅하는 방법에 대한 개략적인 개요를 제공하고 앱이 FCM 서비스를 사용할 수 있도록 자격 증명을 획득하기 위한 단계별 절차를 제공합니다.

개요

FCM(Firebase Cloud Messaging)은 서버 애플리케이션과 모바일 클라이언트 앱 간에 메시지의 송신, 라우팅 및 큐를 처리하는 플랫폼 간 서비스입니다. FCM은 GCM(Google Cloud Messaging)의 후속 서비스이며 Google Play 서비스를 기반으로 합니다.

다음 다이어그램에 설명된 것처럼 FCM은 메시지 보낸 사람과 클라이언트 간의 중개자 역할을 합니다. 클라이언트 앱은 디바이스에서 실행되는 FCM 지원 앱입니다. 사용자 또는 회사에서 제공하는 앱 서버는 클라이언트 앱이 FCM을 통해 통신하는 FCM 지원 서버입니다. GCM과 달리 FCM을 사용하면 Firebase 콘솔 알림 GUI를 통해 직접 클라이언트 앱에 메시지를 보낼 수 있습니다.

FCM sits between the client app and an app server

앱 서버는 FCM을 사용하여 단일 디바이스, 디바이스 그룹 또는 토픽을 구독하는 여러 디바이스에 메시지를 보낼 수 있습니다. 클라이언트 앱은 FCM을 사용하여 앱 서버에서 다운스트림 메시지를 구독할 수 있습니다(예: 원격 알림을 수신). 다양한 유형의 Firebase 메시지에 대한 자세한 내용은 FCM 메시지 정보를 참조 하세요.

실행 중인 Firebase 클라우드 메시징

앱 서버에서 클라이언트 앱으로 다운스트림 메시지를 보내면 앱 서버는 Google에서 제공하는 FCM 연결 서버로 메시지를 보내고, FCM 연결 서버는 클라이언트 앱을 실행하는 디바이스에 메시지를 전달합니다. HTTP 또는 XMPP (확장 가능 메시징 및 현재 상태 프로토콜)를 통해 메시지를 보낼 수 있습니다. 클라이언트 앱이 항상 연결되거나 실행되는 것은 아니므로 FCM 연결 서버는 메시지를 큐에 넣거나 저장하여 다시 연결하고 사용할 수 있게 되면 클라이언트 앱으로 보냅니다. 마찬가지로 FCM은 앱 서버를 사용할 수 없는 경우 클라이언트 앱에서 앱 서버로 업스트림 메시지를 큐에 추가합니다. FCM 연결 서버에 대한 자세한 내용은 Firebase Cloud Messaging Server를 참조 하세요.

FCM은 다음 자격 증명을 사용하여 앱 서버와 클라이언트 앱을 식별하고, 이러한 자격 증명을 사용하여 FCM을 통해 메시지 트랜잭션에 권한을 부여합니다.

  • 보낸 사람 ID보낸 사람 ID 는 Firebase 프로젝트를 만들 때 할당되는 고유한 숫자 값입니다. 보낸 사람 ID는 클라이언트 앱에 메시지를 보낼 수 있는 각 앱 서버를 식별하는 데 사용됩니다. 보낸 사람 ID는 프로젝트 번호이기도 합니다. 프로젝트를 등록할 때 Firebase 콘솔에서 보낸 사람 ID를 가져옵니다. 보낸 사람 ID의 예는 다음과 같습니다 496915549731.

  • API 키API 키를 사용하면 앱 서버에서 Firebase 서비스에 액세스할 수 있습니다. FCM은 이 키를 사용하여 앱 서버를 인증합니다. 이 자격 증명을 서버 키 또는 웹 API 키라고도 합니다. API 키의 예는 .입니다 AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • 앱 ID – FCM에서 메시지를 수신하도록 등록하는 클라이언트 앱의 ID(지정된 디바이스와 무관)입니다. 앱 ID의 예는 다음과 같습니다 1:415712510732:android:0e1eb7a661af2460.

  • 등록 토큰 – 등록 토큰(인스턴스 ID라고도 함)은 지정된 디바이스에서 클라이언트 앱의 FCM ID입니다. 등록 토큰은 런타임에 생성됩니다. 앱은 디바이스에서 실행하는 동안 FCM에 처음 등록할 때 등록 토큰을 받습니다. 등록 토큰은 FCM에서 메시지를 수신하도록 클라이언트 앱의 인스턴스(해당 특정 디바이스에서 실행)에 권한을 부여합니다. 등록 토큰의 예는 (매우 긴 문자열)입니다 fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS .

Firebase Cloud Messaging 설정(이 가이드의 뒷부분)에서는 프로젝트를 만들고 이러한 자격 증명을 생성하기 위한 자세한 지침을 제공합니다. Firebase 콘솔에서 새 프로젝트를 만들면 google-services.json이라는 자격 증명 파일이 만들어집니다. FCM을 사용한 원격 알림에 설명된 대로 Xamarin.Android 프로젝트에 이 파일을 추가합니다.

다음 섹션에서는 클라이언트 앱이 FCM을 통해 앱 서버와 통신할 때 이러한 자격 증명을 사용하는 방법을 설명합니다.

FCM 등록

메시징을 수행하려면 먼저 클라이언트 앱이 FCM에 등록해야 합니다. 클라이언트 앱은 다음 다이어그램에 표시된 등록 단계를 완료해야 합니다.

App registration steps diagram

  1. 클라이언트 앱은 FCM에 연결하여 등록 토큰을 가져오고 보낸 사람 ID, API 키 및 앱 ID를 FCM에 전달합니다.

  2. FCM은 클라이언트 앱에 등록 토큰을 반환합니다.

  3. 클라이언트 앱(선택 사항)은 등록 토큰을 앱 서버에 전달합니다.

앱 서버는 클라이언트 앱과의 후속 통신을 위해 등록 토큰을 캐시합니다. 앱 서버는 클라이언트 앱에 승인을 다시 보내 등록 토큰이 수신되었음을 나타낼 수 있습니다. 이 핸드셰이크가 수행된 후 클라이언트 앱은 앱 서버에서 메시지를 받거나 메시지를 보낼 수 있습니다. 이전 토큰이 손상된 경우 클라이언트 앱이 새 등록 토큰을 받을 수 있습니다(앱이 등록 토큰 업데이트를 받는 방법의 예는 FCM을 사용한 원격 알림 참조).

클라이언트 앱이 더 이상 앱 서버에서 메시지를 수신하지 않으려는 경우 앱 서버에 등록 토큰을 삭제하라는 요청을 보낼 수 있습니다. 클라이언트 앱이 디바이스에서 제거되면 FCM은 이를 감지하고 자동으로 앱 서버에 등록 토큰을 삭제하도록 알린다.

다운스트림 메시징

다음 다이어그램에서는 Firebase Cloud Messaging이 다운스트림 메시지를 저장하고 전달하는 방법을 보여 줍니다.

FCM uses store and forward for downstream messaging

앱 서버가 클라이언트 앱에 다운스트림 메시지를 보내면 위의 다이어그램에 열거된 대로 다음 단계를 사용합니다.

  1. 앱 서버는 FCM에 메시지를 보냅니다.

  2. 클라이언트 디바이스를 사용할 수 없는 경우 FCM 서버는 이후 전송을 위해 메시지를 큐에 저장합니다. 메시지는 최대 4주 동안 FCM 스토리지에 보존됩니다(자세한 내용은 메시지 수명 설정 참조).

  3. 클라이언트 디바이스를 사용할 수 있는 경우 FCM은 해당 디바이스의 클라이언트 앱에 메시지를 전달합니다.

  4. 클라이언트 앱은 FCM에서 메시지를 수신하고, 처리하고, 사용자에게 표시합니다. 예를 들어 메시지가 원격 알림인 경우 알림 영역의 사용자에게 표시됩니다.

이 메시징 시나리오(앱 서버가 단일 클라이언트 앱에 메시지를 보내는 경우)에서는 메시지 길이가 최대 4kB일 수 있습니다.

Android에서 다운스트림 FCM 메시지를 수신하는 방법에 대한 자세한 내용은 FCM을 사용한 원격 알림을 참조하세요.

토픽 메시징

토픽 메시징을 사용하면 앱 서버가 특정 토픽에 옵트인한 여러 디바이스에 메시지를 보낼 수 있습니다. Firebase 콘솔 알림 GUI를 통해 토픽 메시지를 작성하고 보낼 수도 있습니다. FCM은 구독된 클라이언트에 대한 토픽 메시지의 라우팅 및 배달을 처리합니다. 이 기능은 날씨 경고, 주식 시세 및 헤드라인 뉴스와 같은 메시지에 사용할 수 있습니다.

Topic messaging diagram

다음 단계는 토픽 메시징에 사용됩니다(클라이언트 앱이 앞에서 설명한 대로 등록 토큰을 가져온 후).

  1. 클라이언트 앱은 FCM에 구독 메시지를 전송하여 토픽을 구독합니다.

  2. 앱 서버는 배포를 위해 FCM에 토픽 메시지를 보냅니다.

  3. FCM은 해당 토픽을 구독한 클라이언트에 토픽 메시지를 전달합니다.

Firebase 토픽 메시징에 대한 자세한 내용은 Android에서 Google의 토픽 메시징을 참조하세요.

Firebase Cloud Messaging 설정

앱에서 FCM 서비스를 사용하려면 먼저 Firebase 콘솔을 통해 새 프로젝트를 만들거나 기존 프로젝트를 가져와야 합니다. 다음 단계를 사용하여 앱에 대한 Firebase Cloud Messaging 프로젝트를 만듭니다.

  1. Google 계정(예: Gmail 주소)으로 Firebase 콘솔에 로그인하고 새 프로젝트 만들기를 클릭합니다.

    Create New Project button

    기존 프로젝트가 있는 경우 Google 프로젝트 가져오기를 클릭합니다.

  2. 프로젝트 만들기 대화 상자에서 프로젝트 이름을 입력하고 프로젝트 만들기를 클릭합니다. 다음 예제에서는 XamarinFCM이라는 새 프로젝트가 만들어집니다.

    Create a Project dialog

  3. Firebase 콘솔 개요에서 Android 앱에 Firebase 추가를 클릭합니다.

    Add Firebase to your Android app

  4. 다음 화면에서 앱의 패키지 이름을 입력합니다. 이 예제에서 패키지 이름은 com.xamarin.fcmexample입니다. 이 값은 Android 앱의 패키지 이름과 일치해야 합니다. 앱 애칭 필드에 앱 애칭입력할 수도 있습니다.

    Entering FCM Example as the app nickname

  5. 앱에서 동적 링크, 초대 또는 Google 인증을 사용하는 경우 디버그 서명 인증서도 입력해야 합니다. 서명 인증서를 찾는 방법에 대한 자세한 내용은 Keystore의 MD5 또는 SHA1 서명 찾기를 참조하세요. 이 예제에서는 서명 인증서가 비워 집니다.

  6. 앱 추가를 클릭합니다.

    Clicking the Add App button

    서버 API 키와 클라이언트 ID는 앱에 대해 자동으로 생성됩니다. 이 정보는 ADD APP을 클릭하면 자동으로 다운로드되는 google-services.json 파일에 패키지됩니다. 이 파일을 안전한 곳에 저장해야 합니다.

Android에서 FCM 푸시 알림 메시지를 수신하기 위해 앱 프로젝트에 google-services.json 추가하는 방법에 대한 자세한 예제는 FCM을 사용한 원격 알림을 참조하세요.

추가 참고 자료

  • Google의 Firebase Cloud Messaging 은 Firebase Cloud Messaging의 주요 기능에 대한 개요, 작동 방식에 대한 설명 및 설정 지침을 제공합니다.

  • Google의 빌드 앱 서버 보내기 요청은 앱 서버로 메시지를 보내는 방법을 설명합니다.

  • RFC 6120RFC 6121 은 XMPP(Extensible Messaging and Presence Protocol)를 설명하고 정의합니다.

  • FCM 메시지 정보에서는 Firebase Cloud Messaging과 함께 보낼 수 있는 다양한 유형의 메시지를 설명합니다.

요약

이 문서에서는 FCM(Firebase Cloud Messaging)에 대한 개요를 제공했습니다. 앱 서버와 클라이언트 앱 간의 메시징을 식별하고 권한을 부여하는 데 사용되는 다양한 자격 증명을 설명했습니다. 등록 및 다운스트림 메시징 시나리오를 설명하고 FCM 서비스를 사용하기 위해 FCM에 앱을 등록하는 단계를 자세히 설명했습니다.