콘솔로 이동

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

이 문서에서는 Firebase 클라우드 메시징을 통해 앱 서버에서 클라이언트 앱으로 메시지를 전달하는 데 사용되는 HTTP 구문의 참조를 제공합니다. 앱 서버는 모든 HTTP 요청을 다음 엔드포인트로 연결해야 합니다.

https://fcm.googleapis.com/fcm/send

사용 가능한 매개변수와 옵션은 크게 다음 카테고리로 분류할 수 있습니다.

다운스트림 메시지 구문

이 섹션에서는 다운스트림 메시지를 보내고 Firebase 클라우드 메시징의 HTTP 응답을 해석하기 위한 구문을 제공합니다.

다운스트림 HTTP 메시지(JSON)

다음 표에서는 HTTP JSON 메시지의 대상, 옵션 및 페이로드를 보여줍니다.

표 1. 다운스트림 HTTP 메시지(JSON)의 대상, 옵션, 페이로드

매개변수 사용량 설명
대상
to 선택사항, 문자열

이 매개변수는 메시지의 수신자를 지정합니다.

이 값은 기기의 등록 토큰, 기기 그룹의 알림 키 또는 단일 주제(/topics/ 프리픽스 포함)가 될 수 있습니다. 여러 주제로 보내려면 condition 매개변수를 사용하세요.

registration_ids
선택사항, 문자열 배열

이 매개변수는 멀티캐스트 메시지(둘 이상의 등록 토큰으로 전송된 메시지)의 수신자를 지정합니다.

이 값은 멀티캐스트 메시지를 보낼 등록 토큰의 배열이어야 합니다. 배열에 포함될 수 있는 등록 토큰 수는 1~1,000개입니다. 단일 기기로 메시지를 보내려면 to 매개변수를 사용하세요.

멀티캐스트 메시지에는 HTTP JSON 형식만 사용할 수 있습니다.

condition 선택사항, 문자열

이 매개변수는 메시지 대상을 결정하는 조건의 논리식을 지정합니다.

지원되는 조건은 형식이 ''yourTopic' in topics'로 지정된 주제입니다. 이 값은 대소문자를 구분합니다.

지원되는 연산자는 &&, ||입니다. 주제 메시지당 최대 2개의 연산자가 지원됩니다.

notification_key
사용 중지됨
선택사항, 문자열

이 매개변수는 지원 중단되었습니다. 대신 to를 사용하여 메시지 수신자를 지정하세요. 여러 기기로 메시지를 보내는 방법의 자세한 내용은 플랫폼별 문서를 참조하세요.

옵션
collapse_key 선택사항, 문자열

이 매개변수는 전송을 재개할 수 있을 때 마지막 메시지만 보내도록 축소가 가능한 메시지(예: collapse_key: "Updates Available" 포함 메시지) 그룹을 의미합니다. 기기가 다시 온라인 또는 활성 상태가 되었을 때 동일한 메시지가 너무 많이 전송되는 것을 방지하기 위한 메시지입니다.

메시지가 전송되는 순서는 보장되지 않는다는 점에 유의하세요.

참고: 지정한 기간에 최대 4개의 다른 축소 키가 허용됩니다. 즉, FCM은 클라이언트 앱당 4개의 서로 다른 메시지를 동시에 저장할 수 있습니다. 이 한도를 초과하면 FCM 연결 서버가 축소 키 중 어떤 키 4개를 유지할지 보장되지 않습니다.

priority 선택사항, 문자열

메시지의 우선순위를 설정합니다. 유효한 값은 'normal' 및 'high'입니다. iOS에서는 APN 우선 순위 5와 10에 해당합니다.

기본적으로 알림 메시지는 높은 우선순위로, 데이터 메시지는 보통 우선순위로 전송됩니다. 보통 우선순위는 클라이언트 앱의 배터리 소비를 최적화하기 때문에 즉시 전송해야 하는 경우가 아니라면 이 우선순위를 사용하는 것이 좋습니다. 우선순위가 보통인 메시지의 경우 앱이 메시지를 수신할 때 알 수 없는 지연이 발생할 수 있습니다.

높은 우선순위로 메시지를 보내면 즉시 전송되며 앱에 알림이 표시될 수 있습니다.

content_available 선택사항, 부울

iOS에서는 이 필드를 사용하여 APN 페이로드의 content-available을 나타냅니다. 알림이나 메시지가 전송될 때 이 매개변수가 true로 설정되어 있으면 비활성 클라이언트 앱이 활성 상태로 전환되고, 메시지가 FCM 연결 서버를 거치지 않고 APN을 통해 자동 알림으로 전송됩니다. APN의 자동 알림은 확실히 전달된다는 보장이 없으며 사용자가 저전력 모드를 켜거나 앱을 강제 종료하는 등의 행동에 따라 결과가 달라질 수 있습니다. Android에서는 데이터 메시지가 기본적으로 앱을 활성 상태로 전환합니다. Chrome에서는 현재 지원되지 않습니다.

mutable_content 선택사항, JSON 부울

현재 iOS 10 이상 기기에만 해당됩니다. iOS에서는 이 필드를 사용하여 APN 페이로드의 mutable-content를 나타냅니다. 알림을 전송할 때 이 매개변수가 true로 설정되어 있으면 알림을 표시하기 전에 알림 서비스 앱 확장 프로그램을 사용하여 알림의 내용을 수정할 수 있습니다. Android 및 웹에서는 이 매개변수가 무시됩니다.

time_to_live 선택사항, 숫자

이 매개변수는 기기가 오프라인 상태인 경우 FCM 저장소에 메시지를 보관해야 하는 시간(초)을 지정합니다. 지원되는 최대 수명은 4주이며 기본값도 4주입니다. 자세한 내용은 메시지 수명 설정을 참조하세요.

restricted_package_
name
(Android 전용)
선택사항, 문자열 이 매개변수는 등록 토큰이 일치해야 메시지를 수신할 수 있는 애플리케이션의 패키지 이름을 지정합니다.
dry_run 선택사항, 부울

이 매개변수가 true로 설정되어 있으면 개발자가 실제로 메시지를 보내지 않고도 요청을 테스트할 수 있습니다.

기본값은 false입니다.

페이로드
data 선택사항, 객체

이 매개변수는 메시지 페이로드의 맞춤 키-값 쌍을 지정합니다.

예를 들어 data:{"score":"3x1"}:인 경우 다음과 같습니다.

iOS에서는 메시지가 APN을 통해 전송되는 경우 맞춤 데이터 필드를 나타냅니다. FCM 연결 서버를 통해 전송되는 경우에는 AppDelegate application:didReceiveRemoteNotification:의 키와 값으로 구성된 사전으로 표시됩니다.

Android에서는 문자열 값이 3x1score라는 추가 인텐트가 생성됩니다.

키가 예약된 단어('google'이나 'gcm'으로 시작하는 모든 단어 또는 'from')여서는 안 됩니다. 이 표에 정의되어 있는 모든 단어(예: collapse_key) 역시 사용해서는 안 됩니다.

문자열 유형의 값을 사용하는 것이 좋습니다. 객체의 값이나 문자열이 아닌 기타 데이터 유형(예: 정수 또는 부울)은 문자열로 변환해야 합니다.

notification 선택사항, 객체 이 매개변수는 사용자에게 표시되는 사전 정의된 알림 페이로드의 키-값 쌍을 지정합니다. 자세한 내용은 알림 페이로드 지원을 참조하세요. 알림 메시지 및 데이터 메시지 옵션의 자세한 내용은 메시지 유형을 참조하세요. iOS 기기로 보내는 메시지에 알림 페이로드가 제공되었거나 content_available 옵션이 true로 설정된 경우 메시지가 APN을 통해 전송되고, 그렇지 않은 경우 FCM 연결 서버를 통해 전송됩니다.

알림 페이로드 지원

다음 표에서는 iOS 및 Android용 알림 메시지를 작성하는 데 사용할 수 있는 사전 정의된 키를 보여줍니다.

표 2a. iOS — 알림 메시지 키

매개변수 사용량 설명
title 선택사항, 문자열

알림의 제목입니다.

이 필드는 iOS 휴대전화(iPhone)와 태블릿(iPad)에는 표시되지 않습니다.

body 선택사항, 문자열

알림의 본문입니다.

sound 선택사항, 문자열 또는 사전

기기가 알림을 수신하면 재생하는 알림음입니다.

클라이언트 앱의 기본 번들 또는 앱 데이터 컨테이너의 Library/Sounds 폴더에 있는 알림음 파일을 지정하는 문자열입니다. 자세한 내용은 iOS 개발자 라이브러리를 참조하세요.

중요한 알림의 경우 중요 알림의 알림음 정보가 포함된 사전을 사용하세요. 필요한 키는 iOS 개발자 라이브러리를 참조하세요. 일반적인 알림에는 알림음 문자열을 사용하세요.

badge 선택사항, 문자열

홈 화면 앱 아이콘의 배지 값입니다.

지정하지 않으면 배지가 변경되지 않습니다.

0으로 설정하면 배지가 삭제됩니다.

click_action 선택사항, 문자열

사용자의 알림 클릭과 관련된 작업입니다.

APN 페이로드의 category에 해당합니다.

subtitle 선택사항, 문자열

알림의 부제목입니다.

body_loc_key 선택사항, 문자열

앱의 문자열 리소스에서 본문을 사용자의 현재 지역으로 현지화하는 데 사용할 본문 문자열의 키입니다.

APN 페이로드의 loc-key에 해당합니다.

자세한 내용은 페이로드 키 참조원격 알림 내용 현지화를 확인하세요.

body_loc_args 선택사항, 문자열인 JSON 배열

본문을 사용자의 현재 지역으로 현지화하는 데 사용할 body_loc_key의 형식 지정자 대신 사용될 변수 문자열 값입니다.

APN 페이로드의 loc-args에 해당합니다.

자세한 내용은 페이로드 키 참조원격 알림 내용 현지화를 확인하세요.

title_loc_key 선택사항, 문자열

앱의 문자열 리소스에서 제목을 사용자의 현재 지역으로 현지화하는 데 사용할 제목 문자열의 키입니다.

APN 페이로드의 title-loc-key에 해당합니다.

자세한 내용은 페이로드 키 참조원격 알림 내용 현지화를 확인하세요.

title_loc_args 선택사항, 문자열인 JSON 배열

제목을 사용자의 현재 지역으로 현지화하는 데 사용할 title_loc_key의 형식 지정자 대신 사용될 변수 문자열 값입니다.

APN 페이로드의 title-loc-args에 해당합니다.

자세한 내용은 페이로드 키 참조원격 알림 내용 현지화를 확인하세요.

표 2b. Android — 알림 메시지 키

매개변수 사용량 설명
title 선택사항, 문자열

알림의 제목입니다.

body 선택사항, 문자열

알림의 본문입니다.

android_channel_id 선택사항, 문자열

Android O에서 새로 추가된 알림의 채널 ID입니다.

이 채널 ID가 있는 알림을 받으려면 앱에서 이 채널 ID로 채널을 만들어야 합니다.

요청에서 이 채널 ID를 보내지 않거나 제공된 채널 ID가 앱에서 아직 만들어지지 않은 경우 FCM은 앱 매니페스트에 지정된 채널 ID를 사용합니다.

icon 선택사항, 문자열

알림 아이콘입니다.

드로어블 리소스 myicon에 대한 알림 아이콘을 myicon으로 설정합니다. 요청에서 이 키를 전송하지 않으면 FCM은 앱 매니페스트에 지정된 런처 아이콘을 표시합니다.

sound 선택사항, 문자열

기기가 알림을 수신하면 재생하는 알림음입니다.

"default" 또는 앱에 번들로 포함된 사운드 리소스의 파일 이름을 지원합니다. 사운드 파일은 /res/raw/에 있어야 합니다.

tag 선택사항, 문자열

알림 창에서 기존 알림을 대체하는 데 사용되는 식별자입니다.

지정하지 않으면 각 요청이 새 알림을 만듭니다.

지정하면 태그가 동일한 알림이 이미 표시되고 있는 경우 새 알림이 알림 창의 기존 알림을 대체합니다.

color 선택사항, 문자열

#rrggbb 형식으로 표현한 알림 아이콘 색상입니다.

click_action 선택사항, 문자열

사용자의 알림 클릭과 관련된 작업입니다.

지정하면 사용자가 알림을 클릭할 때 일치하는 인텐트 필터가 있는 액티비티가 실행됩니다.

body_loc_key 선택사항, 문자열

앱의 문자열 리소스에서 본문을 사용자의 현재 지역으로 현지화하는 데 사용할 본문 문자열의 키입니다.

자세한 내용은 문자열 리소스를 참조하세요.

body_loc_args 선택사항, 문자열인 JSON 배열

본문을 사용자의 현재 지역으로 현지화하는 데 사용할 body_loc_key의 형식 지정자 대신 사용될 변수 문자열 값입니다.

자세한 내용은 형식 및 스타일 지정을 참조하세요.

title_loc_key 선택사항, 문자열

앱의 문자열 리소스에서 제목을 사용자의 현재 지역으로 현지화하는 데 사용할 제목 문자열의 키입니다.

자세한 내용은 문자열 리소스를 참조하세요.

title_loc_args 선택사항, 문자열인 JSON 배열

제목을 사용자의 현재 지역으로 현지화하는 데 사용할 title_loc_key의 형식 지정자 대신 사용될 변수 문자열 값입니다.

자세한 내용은 형식 및 스타일 지정을 참조하세요.

표 2c. 웹(자바스크립트) — 알림 메시지 키

매개변수 사용량 설명
title 선택사항, 문자열

알림의 제목입니다.

body 선택사항, 문자열

알림의 본문입니다.

icon 선택사항, 문자열

알림 아이콘에 사용할 URL입니다.

click_action 선택사항, 문자열

사용자의 알림 클릭과 관련된 작업입니다.

모든 URL 값은 보안 HTTPS여야 합니다.

다운스트림 HTTP 메시지(일반 텍스트)

다음 표에는 일반 텍스트 다운스트림 HTTP 메시지의 대상, 옵션, 페이로드용 구문이 나와 있습니다.

표 3. 다운스트림 일반 텍스트 HTTP 메시지의 대상, 옵션, 페이로드

매개변수 사용량 설명
대상
registration_id 필수, 문자열

이 매개변수는 메시지를 수신하는 클라이언트 앱을 등록 ID로 지정합니다.

2개 이상의 등록 ID로 보내는 멀티캐스트 메시징은 HTTP JSON 형식만 사용할 수 있습니다.

옵션
collapse_key 선택사항, 문자열 자세한 내용은 표 1을 참조하세요.
time_to_live 선택사항, 숫자 자세한 내용은 표 1을 참조하세요.
restricted_package_name 선택사항, 문자열 자세한 내용은 표 1을 참조하세요.
dry_run 선택사항, 부울 자세한 내용은 표 1을 참조하세요.
페이로드
data.<key> 선택사항, 문자열

이 매개변수는 메시지 페이로드의 키-값 쌍을 지정합니다. 키-값 매개변수의 수에는 제한이 없지만 총 메시지 크기가 4KB로 제한됩니다.

예를 들어 Android에서 "data.score"."3x1"로 지정하면 문자열 값이 3x1score라는 추가 인텐트가 생성됩니다.

키가 예약된 단어('google'이나 'gcm'으로 시작하는 모든 단어 또는 'from')여서는 안 됩니다. 이 표에 정의되어 있는 모든 단어(예: collapse_key도 사용해서는 안 됩니다.

다운스트림 메시지 응답 해석

앱 서버는 FCM에서 보낸 메시지 응답을 해석하기 위해 메시지 응답 헤더와 본문을 모두 계산해야 합니다. 다음 표에서는 수신할 수 있는 응답에 대해 설명합니다.

표 4. 다운스트림 HTTP 메시지 응답 헤더

응답 설명
200 메시지가 성공적으로 처리되었습니다. 응답 본문에 메시지 상태에 대한 자세한 내용이 포함되지만 요청이 JSON이었는지 아니면 일반 텍스트였는지에 따라 형식이 다릅니다. 자세한 내용은 표 5를 참조하세요.
400 JSON 요청에만 적용됩니다. 요청을 JSON으로 파싱하지 못했거나 잘못된 필드가 포함되었음을 나타냅니다. 예를 들어 숫자를 전달해야 하는데 문자열을 전달한 경우입니다. 정확한 실패 사유는 응답에 설명되어 있으며 요청을 다시 시도하기 전에 문제를 해결해야 합니다.
401 발신자 계정을 인증하는 중에 오류가 발생했습니다.
5xx 500이나 503 같은 500~599 범위 내의 오류는 요청을 처리하려고 시도하는 중에 FCM 연결 서버에 내부 오류가 발생했거나 제한 시간 초과 등으로 인해 서버를 일시적으로 사용할 수 없었다는 의미입니다. 발신자는 응답에 포함된 Retry-After 헤더를 반영하여 나중에 다시 시도해야 합니다. 애플리케이션 서버는 지수 백오프 방식을 구현해야 합니다.

다음 표에는 다운스트림 메시지 응답 본문(JSON)의 필드가 나와 있습니다.

표 5. 다운스트림 HTTP 메시지 응답 본문(JSON)

매개변수 사용량 설명
multicast_id 필수항목, 숫자 멀티캐스트 메시지를 식별하는 숫자로 된 고유 ID입니다.
success 필수항목, 숫자 오류 없이 처리된 메시지 수입니다.
failure 필수항목, 숫자 처리하지 못한 메시지 수입니다.
results 필수항목, 객체 배열 처리된 메시지의 상태를 나타내는 객체의 배열입니다. 객체는 요청과 동일한 순서로 표시됩니다. 즉, 요청의 각 등록 ID마다 응답의 동일한 색인에 표시됩니다.
  • message_id: 성공적으로 처리된 각 메시지의 고유 ID를 지정하는 문자열입니다.
  • registration_id: 메시지가 처리되어 전송된 클라이언트 앱의 등록 토큰을 지정하는 선택사항 문자열입니다.
  • error: 수신자의 메시지를 처리할 때 발생한 오류를 지정하는 문자열입니다. 가능한 값은 표 9에서 확인할 수 있습니다.

표 6. 주제 메시지 HTTP 응답 본문(JSON)

매개변수 사용량 설명
message_id 선택사항, 숫자 FCM이 성공적으로 요청을 수신한 경우 모든 구독 기기로 전송을 시도하는 주제 메시지 ID입니다.
error 선택사항, 문자열 메시지를 처리할 때 발생한 오류입니다. 가능한 값은 표 9에서 확인할 수 있습니다.

표 7. 다운스트림 HTTP 메시지 응답 본문(일반 텍스트)의 성공 응답

매개변수 사용량 설명
id 필수, 문자열 이 매개변수는 FCM 연결 서버가 성공적으로 처리한 고유 메시지 ID를 지정합니다.
registration_id 선택사항, 문자열 이 매개변수는 메시지가 처리되어 전송된 클라이언트 앱의 등록 토큰을 지정합니다.

표 8. 다운스트림 HTTP 메시지 응답 본문(일반 텍스트)의 오류 응답

매개변수 사용량 설명
Error 필수, 문자열 이 매개변수는 수신자의 메시지를 처리하는 중에 발생한 오류 값을 지정합니다. 자세한 내용은 표 9를 참조하세요.

다운스트림 메시지 오류 응답 코드

다음 표에는 다운스트림 메시지의 오류 응답 코드가 나와 있습니다.

표 9. 다운스트림 메시지 오류 응답 코드

오류 HTTP 코드 권장 작업
누락된 등록 토큰 200 + error:MissingRegistration 요청에 등록 토큰이 포함되어 있는지 확인하세요. 일반 텍스트 메시지의 registration_id나 JSON의 to 또는 registration_ids 필드를 확인하세요.
잘못된 등록 토큰 200 + error:InvalidRegistration 서버에 전달한 등록 토큰의 형식을 확인하세요. Firebase 알림을 사용해 등록할 때 클라이언트 앱이 수신한 등록 토큰과 일치해야 합니다. 일부분 자르거나 다른 문자를 추가해서는 안 됩니다.
등록되지 않은 기기 200 + error:NotRegistered 다음을 비롯한 몇몇 상황에서는 기존 등록 코드가 더 이상 유효하지 않게 될 수 있습니다.
  • 클라이언트 앱이 FCM에서 등록 해제되었습니다.
  • 클라이언트 앱이 자동으로 등록 해제되었습니다. 사용자가 애플리케이션을 제거한 경우에 발생할 수 있습니다. 예를 들어 iOS에서 APNS 피드백 서비스가 APNS 토큰이 잘못되었다고 보고한 경우입니다.
  • 등록 토큰이 만료되었습니다. 예를 들어 Google에서 등록 토큰 새로고침을 결정한 경우이거나 APNS 토큰이 iOS 기기에서 만료된 경우입니다.
  • 클라이언트 앱이 업데이트되었지만 새 버전이 메시지를 수신할 수 있도록 구성되지 않았습니다.
위와 같은 경우에는 앱 서버에서 등록 토큰을 삭제하고 더 이상 메시지 전송에 이 등록 토큰을 사용하지 마세요.
잘못된 패키지 이름 200 + error:InvalidPackageName 요청에서 전달한 값과 패키지 이름과 일치하는 등록 토큰으로 메시지를 보내도록 지정했는지 확인합니다.
인증 오류 401 메시지를 보내는 데 사용한 발신자 계정을 인증할 수 없습니다. 가능한 원인은 다음과 같습니다.
  • 승인 헤더가 누락되었거나 HTTP 요청에 잘못된 구문이 있습니다.
  • 지정한 서버 키가 속한 Firebase 프로젝트가 잘못되었습니다.
  • 이전 서버 키만 해당 - 서버에서 시작된 요청이 서버 키 IP의 허용 목록에 없습니다.
인증 헤더에 있는 전송 중인 토큰이 프로젝트에 연결된 올바른 서버 키인지 확인하세요. 자세한 내용은 서버 키 유효성 확인 을 참조하세요. 이전 서버 키를 사용하는 경우에는 IP 제한이 없는 새 키로 업그레이드하는 것이 좋습니다.
일치하지 않는 발신자 200 + error:MismatchSenderId 등록 토큰은 특정 발신자 그룹에 연결됩니다. 클라이언트 앱을 FCM에 등록할 때 메시지를 보낼 수 있는 발신자를 지정해야 합니다. 클라이언트 앱에 메시지를 보낼 때는 지정한 발신자 ID를 사용해야 합니다. 다른 발신자로 전환하면 기존 등록 토큰이 작동하지 않습니다.
잘못된 JSON 400 JSON 메시지의 형식이 올바르게 지정되었으며 올바른 필드가 포함되어 있는지 확인하세요. 예를 들어 올바른 데이터 유형이 전달되는지 확인해야 합니다.
잘못된 매개변수 400 + error:InvalidParameters 제공한 매개변수의 이름과 유형이 올바른지 확인하세요.
너무 큰 메시지 200 + error:MessageTooBig 메시지에 포함된 페이로드 데이터의 총 크기가 FCM 한도를 초과하지 않았는지 확인하세요. 대부분의 메시지는 4,096바이트이며 주제로 보내는 메시지의 경우는 2,048바이트입니다. 여기에는 키와 값이 모두 포함됩니다.
잘못된 데이터 키 200 + error:
InvalidDataKey
페이로드 데이터에 FCM에서 내부적으로 사용하는 키(예: from, gcm 또는 프리픽스가 google인 모든 값)가 포함되지 않았는지 확인하세요. 또한 페이로드 값이 FCM 값에 의해 재정의되는 경우에는 FCM에서 사용하는 collapse_key와 같은 일부 단어가 페이로드에 허용된다는 점에 유의하세요.
잘못된 수명 200 + error:InvalidTtl time_to_live에서 사용한 값이 0초에서 2,419,200초(4주) 사이의 기간을 나타내는 정수인지 확인하세요.
시간 초과 5xx 또는 200 + error:Unavailable

서버에서 시간 내에 요청을 처리하지 못했습니다. 동일한 요청을 다시 시도하되 다음을 수행해야 합니다.

  • Retry-After 헤더가 FCM 연결 서버의 응답에 포함된 경우 이 헤더를 반영합니다.
  • 재시도 방식에서 지수 백오프를 구현합니다. 예를 들어 첫 번째 재시도 전에 1초 동안 기다렸다면 두 번째 재시도는 2초 이상 기다리고 다음 시도는 4초 동안 기다리는 식으로 대기 시간을 늘려 나갑니다. 여러 메시지를 보내는 경우에는 동시에 모든 메시지에 대한 새로운 요청을 만들지 않도록 메시지마다 개별적으로 임의의 지연 시간을 추가하세요.

문제를 유발하는 발신자는 차단될 수 있습니다.

내부 서버 오류 500 또는 200 + error:InternalServerError 요청을 처리하려고 시도하는 중에 서버에 오류가 발생했습니다. '제한 시간'에 나와 있는 요구사항에 따라 동일한 요청을 다시 시도할 수 있습니다. 위의 행을 참조하세요. 오류가 계속되면 Firebase 지원팀에 문의하시기 바랍니다.
기기 메시지 비율 초과 200 + error:
DeviceMessageRate
Exceeded

특정 기기로 전달되는 메시지 비율이 너무 높습니다. iOS 앱의 메시지 전송 속도가 APN 한도를 초과하면 이 오류 메시지가 표시될 수 있습니다.

이 기기로 보내는 메시지 수를 줄이고 전송을 재시도할 때 지수 백오프를 사용하세요.

주제 메시지 비율 초과 200 + error:
TopicsMessageRate
Exceeded
특정 주제의 구독자에게 전달되는 메시지 비율이 너무 높습니다. 이 주제로 보내는 메시지 수를 줄이고 전송을 재시도할 때 지수 백오프를 사용하세요.
잘못된 APN 인증 정보 200 + error:
InvalidApnsCredential
필수 APN 인증 키가 업로드되지 않았거나 만료되어 iOS 기기를 타겟팅한 메시지를 보내지 못했습니다. 개발 및 프로덕션 인증 정보의 유효성을 확인하세요.

기기 그룹 관리

다음 표에는 기기 그룹을 만들고 구성원을 추가 및 삭제하기 위한 키가 나와 있습니다. 자세한 내용은 플랫폼별 가이드(iOS 또는 Android)를 참조하세요.

표 10. 기기 그룹 관리 키

매개변수 사용량 설명
operation 필수, 문자열 실행할 작업입니다.Valid 값에 대한 작업은 create, add, remove입니다.
notification_key_name 필수, 문자열 만들거나 수정할 기기 그룹의 맞춤 설정 이름입니다.
notification_key 필수(create 작업 제외, 문자열) 기기 그룹의 고유한 식별자입니다. create 작업이 성공했을 때 반환하는 값으로 기기 그룹의 모든 후속 작업에 필요한 값입니다.
registration_ids 필수, 문자열 배열 추가 또는 삭제할 기기 토큰입니다. 기기 그룹에서 기존 등록 토큰을 모두 삭제하면 FCM에서 기기 그룹을 삭제합니다.