리소스: Message
Firebase 클라우드 메시징 서비스에서 보낼 메시지입니다.
JSON 표현 |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
필드 | |
---|---|
name |
출력 전용. 보낸 메시지의 식별자로, |
data |
입력 전용입니다. 임의의 키/값 페이로드로, UTF-8로 인코딩되어야 합니다. 키는 예약어('google.' 또는 'gcm.notification'으로 시작하는 모든 단어 또는 'from', 'message_type')여서는 안 됩니다. 데이터 필드만 포함된 페이로드를 iOS 기기로 전송할 때는
|
notification |
입력 전용입니다. 모든 플랫폼에서 사용할 기본 알림 템플릿입니다. |
android |
입력 전용입니다. FCM 연결 서버를 통해 전송되는 메시지에 대한 Android 전용 옵션입니다. |
webpush |
입력 전용입니다. Webpush 프로토콜 옵션 |
apns |
입력 전용입니다. Apple 푸시 알림 서비스 관련 옵션 |
fcm_options |
입력 전용입니다. 모든 플랫폼에서 사용할 FCM SDK 기능 옵션 템플릿입니다. |
통합 필드 target . 필수 항목입니다. 입력 전용입니다. 메시지를 전송할 대상입니다. target 은 다음 중 하나여야 합니다. |
|
token |
메시지를 전송할 등록 토큰입니다. |
topic |
메시지를 보낼 주제 이름입니다. 예: 'weather'로 대체하세요. 참고: '/topics/' 접두어를 입력하지 않아야 합니다. |
condition |
메시지를 보낼 조건입니다. 예: 'foo' 주제 && 'bar' 주제에서 찾을 수 있습니다. |
알림
모든 플랫폼에서 사용할 기본 알림 템플릿입니다.
JSON 표현 |
---|
{ "title": string, "body": string, "image": string } |
필드 | |
---|---|
title |
알림의 제목입니다. |
body |
알림의 본문입니다. |
image |
기기에 다운로드되어 알림에 표시될 이미지의 URL이 포함됩니다. JPEG, PNG, BMP는 여러 플랫폼에서 완벽하게 지원됩니다. 애니메이션 GIF 및 동영상은 iOS에서만 작동합니다. WebP와 HEIF는 플랫폼과 플랫폼 버전에 따라 다양한 수준의 지원을 제공합니다. Android의 이미지 크기 제한은 1MB입니다. Firebase 스토리지에서 이미지를 호스팅하기 위한 할당량 사용량 및 영향/비용: https://firebase.google.com/pricing |
AndroidConfig
FCM 연결 서버를 통해 전송되는 메시지에 대한 Android 전용 옵션입니다.
JSON 표현 |
---|
{ "collapse_key": string, "priority": enum ( |
필드 | |
---|---|
collapse_key |
축소할 수 있는 메일 그룹의 식별자입니다. 따라서 전송을 재개할 수 있을 때 마지막 메시지만 전송됩니다. 축소 키는 지정된 시간에 최대 4개까지 허용됩니다. |
priority |
메시지 우선순위입니다. 'normal'을 취할 수 있음 'high' 값으로 사용됩니다. 자세한 내용은 메시지 우선순위 설정하기를 참고하세요. |
ttl |
기기가 오프라인 상태인 경우 FCM 저장소에 메시지를 보관해야 하는 시간 (초)입니다. 지원되는 최대 TTL(수명)은 4주이며, 설정하지 않을 경우 기본값은 4주입니다. 메시지를 즉시 보내려면 0으로 설정합니다. JSON 형식에서 Duration 유형은 객체가 아닌 문자열로 인코딩되며 문자열은 접미사 's'로 끝납니다. (초) 뒤에 초 수가 붙으며 나노초는 소수점 이하 초로 표시됩니다. 예를 들어 0나노초의 3초는 JSON 형식으로 '3s'로 인코딩해야 하며 3초와 1나노초는 JSON 형식으로 '3.000000001s'로 표현해야 합니다. ttl은 초 단위로 내림됩니다. 소수점 아래가 최대 9자리까지이고 ' |
restricted_package_name |
등록 토큰이 일치해야 메시지를 수신할 수 있는 애플리케이션의 패키지 이름입니다. |
data |
임의의 키/값 페이로드. 있는 경우
|
notification |
Android 기기에 보낼 알림입니다. |
fcm_options |
Android용 FCM SDK에서 제공하는 기능의 옵션입니다. |
direct_boot_ok |
true로 설정하면 기기가 직접 부팅 모드일 때 앱에 메시지가 전송될 수 있습니다. 직접 부팅 지원 모드를 참조하세요. |
Android 메시지 우선순위
Android 기기로 전송할 메시지의 우선순위입니다. 이 우선순위는 메시지 전송 시기를 제어하는 FCM 개념입니다. FCM 가이드를 참조하세요. 또한 AndroidNotification.NotificationPriority를 사용하여 대상 Android 기기에서 알림 표시 우선순위를 결정할 수 있습니다.
열거형 | |
---|---|
NORMAL |
데이터 메시지의 기본 우선순위입니다. 보통 우선순위 메시지는 절전 모드인 기기에서 네트워크 연결을 열지 않으며 배터리를 절약하기 위해 전송이 지연될 수 있습니다. 새 이메일 알림이나 기타 데이터 동기화와 같이 시간이 크게 중요하지 않은 메일의 경우 보통 전송 우선순위를 선택합니다. |
HIGH |
알림 메시지의 기본 우선순위입니다. FCM은 우선순위가 높은 메시지를 즉시 전송하려고 시도하며, 가능한 경우 FCM 서비스에서 기기의 절전 모드를 해제하고 앱 서버에 대한 네트워크 연결을 열 수 있습니다. 예를 들어 채팅, 채팅 또는 음성 통화 알림이 포함된 앱은 일반적으로 네트워크 연결을 열고 FCM에서 지연 없이 기기로 메시지를 전송하는지 확인해야 합니다. 시간이 중요한 메시지이며 사용자의 즉각적인 상호작용이 필요한 메시지인 경우 높은 우선순위를 설정하되, 메시지를 높은 우선순위로 설정하면 일반적인 우선순위 메시지에 비해 배터리가 더 많이 소모된다는 점에 유의하세요. |
AndroidNotification
Android 기기에 보낼 알림입니다.
JSON 표현 |
---|
{ "title": string, "body": string, "icon": string, "color": string, "sound": string, "tag": string, "click_action": string, "body_loc_key": string, "body_loc_args": [ string ], "title_loc_key": string, "title_loc_args": [ string ], "channel_id": string, "ticker": string, "sticky": boolean, "event_time": string, "local_only": boolean, "notification_priority": enum ( |
필드 | |
---|---|
title |
알림의 제목입니다. 있는 경우 |
body |
알림의 본문입니다. 있는 경우 |
icon |
알림 아이콘입니다. 드로어블 리소스 myicon에 대한 알림 아이콘을 myicon으로 설정합니다. 요청에서 이 키를 전송하지 않으면 FCM은 앱 매니페스트에 지정된 런처 아이콘을 표시합니다. |
color |
#rrggbb 형식으로 표현된 알림 아이콘 색상입니다. |
sound |
기기가 알림을 수신하면 재생하는 알림음입니다. '기본값' 지원 또는 앱에 번들로 포함된 사운드 리소스의 파일 이름일 수 있습니다. 사운드 파일은 /res/raw/에 있어야 합니다. |
tag |
알림 창에서 기존 알림을 대체하는 데 사용되는 식별자입니다. 지정하지 않으면 각 요청이 새 알림을 만듭니다. 지정하면 태그가 동일한 알림이 이미 표시되고 있는 경우 새 알림이 알림 창의 기존 알림을 대체합니다. |
click_action |
사용자의 알림 클릭과 관련된 작업입니다. 지정하면 사용자가 알림을 클릭할 때 일치하는 인텐트 필터가 있는 활동이 실행됩니다. |
body_loc_key |
앱의 문자열 리소스에서 본문 텍스트를 사용자의 현재 지역으로 현지화하는 데 사용할 본문 문자열의 키입니다. 자세한 내용은 문자열 리소스를 참고하세요. |
body_loc_args[] |
본문 텍스트를 사용자의 현재 지역으로 현지화하는 데 사용할 body_loc_key의 형식 지정자 대신 사용될 변수 문자열 값입니다. 자세한 내용은 서식 지정 및 스타일 지정을 참고하세요. |
title_loc_key |
앱의 문자열 리소스에서 제목 텍스트를 사용자의 현재 지역으로 현지화하는 데 사용할 제목 문자열의 키입니다. 자세한 내용은 문자열 리소스를 참고하세요. |
title_loc_args[] |
제목 텍스트를 사용자의 현재 지역으로 현지화하는 데 사용할 title_loc_key의 형식 지정자 대신 사용될 변수 문자열 값입니다. 자세한 내용은 서식 지정 및 스타일 지정을 참고하세요. |
channel_id |
Android O에서 새로 추가된 알림의 채널 ID입니다. 이 채널 ID가 있는 알림을 받으려면 앱에서 이 채널 ID로 채널을 만들어야 합니다. 요청에서 이 채널 ID를 보내지 않거나 제공된 채널 ID를 앱에서 아직 만들지 않은 경우 FCM은 앱 매니페스트에 지정된 채널 ID를 사용합니다. |
ticker |
'티커'를 설정합니다. 접근성 서비스로 전송됩니다 API 수준 21 ( |
sticky |
false로 설정하거나 설정하지 않으면 사용자가 패널에서 알림을 클릭할 때 알림이 자동으로 닫힙니다. true로 설정하면 사용자가 알림을 클릭해도 알림이 유지됩니다. |
event_time |
알림에서 이벤트가 발생한 시간을 설정합니다. 패널의 알림이 이 시간순으로 정렬됩니다. 특정 시점은 protobuf.Timestamp를 사용하여 표시됩니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
local_only |
이 알림이 현재 기기에만 관련이 있는지 여부를 설정합니다. 일부 알림은 원격 디스플레이를 위해 Wear OS 시계와 같은 다른 기기에 브리징될 수 있습니다. 이 힌트는 이 알림을 브리징하지 않도록 권장하도록 설정할 수 있습니다. Wear OS 가이드를 참고하세요. |
notification_priority |
이 알림에 상대적인 우선순위를 설정합니다. 우선순위는 알림이 얼마나 주의를 기울여야 하는지를 나타냅니다. 특정 상황에서 우선순위가 낮은 알림은 사용자에게 표시되지 않을 수 있지만, 사용자는 더 높은 우선순위의 알림을 받으면 중단될 수 있습니다. 동일한 우선순위를 설정했을 때 미치는 영향은 플랫폼에 따라 약간 다를 수 있습니다. 이 우선순위는 |
default_sound |
true로 설정하면 알림에 Android 프레임워크의 기본 사운드를 사용합니다. 기본값은 config.xml에 지정됩니다. |
default_vibrate_timings |
true로 설정하면 알림에 Android 프레임워크의 기본 진동 패턴을 사용합니다. 기본값은 config.xml에 지정됩니다. |
default_light_settings |
true로 설정하면 알림에 Android 프레임워크의 기본 LED 조명 설정을 사용합니다. 기본값은 config.xml에 지정됩니다. |
vibrate_timings[] |
사용할 진동 패턴을 설정합니다. protobuf.Duration 배열을 전달하여 진동기를 켜거나 끕니다. 첫 번째 값은 진동을 켜기 전에 기다려야 하는 소수점 아래가 최대 9자리까지이고 ' |
visibility |
알림의 Notification.Visibility를 설정합니다. |
notification_count |
이 알림이 나타내는 항목의 수를 설정합니다. 배지 설정을 지원하는 런처에 대해 배지 수로 표시될 수 있습니다.알림 배지를 참조하세요. 예를 들어 하나의 알림만 사용하여 여러 개의 새 메시지를 나타내지만 여기에 표시된 개수가 총 새 메시지 수를 나타내려는 경우 유용할 수 있습니다. 0이거나 지정되지 않은 경우 배지 설정을 지원하는 시스템은 기본값을 사용합니다. 즉, 새 알림이 도착할 때마다 길게 누르기 메뉴에 표시되는 숫자가 증가합니다. |
light_settings |
기기에서 LED를 사용할 수 있는 경우 알림의 LED 깜박임 속도와 색상을 제어하는 설정입니다. 총 깜박임 시간은 OS에서 제어합니다. |
image |
알림에 표시될 이미지의 URL을 포함합니다. 있는 경우 |
bypass_proxy_notification |
이 옵션을 설정하면 기기로 전송된 디스플레이 알림이 프록시가 아닌 앱에서 처리됩니다. |
proxy |
알림을 프록시 처리할 수 있는 경우를 제어하기 위한 설정입니다. |
알림 우선순위
알림의 우선순위 수준입니다.
열거형 | |
---|---|
PRIORITY_UNSPECIFIED |
우선순위가 지정되지 않으면 알림 우선순위는 PRIORITY_DEFAULT 로 설정됩니다. |
PRIORITY_MIN |
알림 우선순위가 가장 낮습니다. 이 PRIORITY_MIN 가 있는 알림은 자세한 알림 로그와 같은 특수한 상황을 제외하고는 사용자에게 표시되지 않을 수 있습니다. |
PRIORITY_LOW |
알림 우선순위가 낮습니다. UI는 PRIORITY_DEFAULT 를 사용하는 알림에 비해 알림을 더 작게 또는 목록에서 다른 위치에 표시하도록 선택할 수 있습니다. |
PRIORITY_DEFAULT |
기본 알림 우선순위입니다. 애플리케이션이 자체 알림에 우선순위를 두지 않는 경우 모든 알림에 이 값을 사용합니다. |
PRIORITY_HIGH |
높은 알림 우선순위 더 중요한 알림에 사용하세요. UI는 PRIORITY_DEFAULT 를 사용하는 알림에 비해 이러한 알림을 알림 목록에서 더 크게 또는 다른 위치에 표시하도록 선택할 수 있습니다. |
PRIORITY_MAX |
알림 우선순위가 가장 높습니다. 사용자의 즉각적인 주의 또는 입력이 필요한 애플리케이션의 가장 중요한 항목에 이 속성을 사용합니다. |
공개 상태
알림의 다양한 공개 상태 수준
열거형 | |
---|---|
VISIBILITY_UNSPECIFIED |
지정하지 않으면 기본값은 Visibility.PRIVATE 입니다. |
PRIVATE |
모든 잠금 화면에 이 알림을 표시하되 보안 잠금 화면에서는 민감한 정보나 개인 정보를 숨깁니다. |
PUBLIC |
모든 잠금 화면에 이 알림 전체를 표시합니다. |
SECRET |
보안 잠금 화면에 알림의 어떤 부분도 공개하지 마세요. |
조명 설정
알림 LED를 제어하는 설정입니다.
JSON 표현 |
---|
{
"color": {
object ( |
필드 | |
---|---|
color |
필수 항목입니다. LED의 |
light_on_duration |
필수 항목입니다. 소수점 아래가 최대 9자리까지이고 ' |
light_off_duration |
필수 항목입니다. 소수점 아래가 최대 9자리까지이고 ' |
색상
RGBA 색상 공간의 색상을 나타냅니다. 이 표현은 간결성을 통해 다양한 언어에서 색상 표현과 색상 표현 간에 간단히 변환할 수 있도록 설계되었습니다. 예를 들어 이 표현의 필드는 Java에서 java.awt.Color
의 생성자에 쉽게 제공될 수 있습니다. iOS에서 UIColor의 +colorWithRed:green:blue:alpha
메서드에 쉽게 제공될 수도 있습니다. 그리고 약간의 작업만 하면 JavaScript에서 CSS rgba()
문자열로 쉽게 형식을 지정할 수 있습니다.
이 참조 페이지에는 RGB 값(예: sRGB, Adobe RGB, DCI-P3, BT.2020)을 해석하는 데 사용해야 하는 절대 색공간에 대한 정보가 없습니다. 기본적으로 애플리케이션은 sRGB 색공간을 가정해야 합니다.
색상 동등성을 결정해야 하는 경우 달리 문서화되지 않는 한 구현에서는 모든 빨간색, 녹색, 파란색, 알파 값이 각각 최대 1e-5
만큼 차이가 나는 경우 두 색상을 동일한 것으로 취급합니다.
예시(자바):
import com.google.type.Color;
// ...
public static java.awt.Color fromProto(Color protocolor) {
float alpha = protocolor.hasAlpha()
? protocolor.getAlpha().getValue()
: 1.0;
return new java.awt.Color(
protocolor.getRed(),
protocolor.getGreen(),
protocolor.getBlue(),
alpha);
}
public static Color toProto(java.awt.Color color) {
float red = (float) color.getRed();
float green = (float) color.getGreen();
float blue = (float) color.getBlue();
float denominator = 255.0;
Color.Builder resultBuilder =
Color
.newBuilder()
.setRed(red / denominator)
.setGreen(green / denominator)
.setBlue(blue / denominator);
int alpha = color.getAlpha();
if (alpha != 255) {
result.setAlpha(
FloatValue
.newBuilder()
.setValue(((float) alpha) / denominator)
.build());
}
return resultBuilder.build();
}
// ...
예시(iOS / obj-C):
// ...
static UIColor* fromProto(Color* protocolor) {
float red = [protocolor red];
float green = [protocolor green];
float blue = [protocolor blue];
FloatValue* alpha_wrapper = [protocolor alpha];
float alpha = 1.0;
if (alpha_wrapper != nil) {
alpha = [alpha_wrapper value];
}
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
static Color* toProto(UIColor* color) {
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
return nil;
}
Color* result = [[Color alloc] init];
[result setRed:red];
[result setGreen:green];
[result setBlue:blue];
if (alpha <= 0.9999) {
[result setAlpha:floatWrapperWithValue(alpha)];
}
[result autorelease];
return result;
}
// ...
예시(자바스크립트):
// ...
var protoToCssColor = function(rgb_color) {
var redFrac = rgb_color.red || 0.0;
var greenFrac = rgb_color.green || 0.0;
var blueFrac = rgb_color.blue || 0.0;
var red = Math.floor(redFrac * 255);
var green = Math.floor(greenFrac * 255);
var blue = Math.floor(blueFrac * 255);
if (!('alpha' in rgb_color)) {
return rgbToCssColor(red, green, blue);
}
var alphaFrac = rgb_color.alpha.value || 0.0;
var rgbParams = [red, green, blue].join(',');
return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};
var rgbToCssColor = function(red, green, blue) {
var rgbNumber = new Number((red << 16) | (green << 8) | blue);
var hexString = rgbNumber.toString(16);
var missingZeros = 6 - hexString.length;
var resultBuilder = ['#'];
for (var i = 0; i < missingZeros; i++) {
resultBuilder.push('0');
}
resultBuilder.push(hexString);
return resultBuilder.join('');
};
// ...
JSON 표현 |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
필드 | |
---|---|
red |
[0, 1] 간격의 값으로 표시되는 색상의 빨간색 양입니다. |
green |
[0, 1] 간격의 값으로 표시되는 색상의 녹색 양입니다. |
blue |
[0, 1] 간격의 값으로 표시되는 색상의 파란색 양입니다. |
alpha |
픽셀에 적용해야 하는 이 색상의 비율입니다. 즉, 최종 픽셀 색상은 등식으로 정의됩니다.
즉, 1.0 값은 단색에 해당하는 반면 0.0 값은 완전히 투명한 색상에 해당합니다. 이 옵션은 단순한 부동 소수점 스칼라 대신 래퍼 메시지를 사용하므로 기본값과 설정되지 않은 값을 구분할 수 있습니다. 생략하면 이 색상 객체가 단색으로 렌더링됩니다 (알파 값에 1.0 값이 명시적으로 지정된 것처럼). |
프록시
알림을 프록시 처리할 수 있는 경우를 제어하기 위한 설정입니다.
열거형 | |
---|---|
PROXY_UNSPECIFIED |
지정하지 않으면 기본값은 Proxy.IF_PRIORITY_LOWERED 입니다. |
ALLOW |
이 알림을 프록시로 설정해 보세요. |
DENY |
이 알림을 프록시 처리하지 않습니다. |
IF_PRIORITY_LOWERED |
기기에서 AndroidMessagePriority 가 HIGH 에서 NORMAL 로 낮아진 경우에만 이 알림을 프록시해 보세요. |
AndroidFcmOptions
Android용 FCM SDK에서 제공하는 기능의 옵션입니다.
JSON 표현 |
---|
{ "analytics_label": string } |
필드 | |
---|---|
analytics_label |
메시지의 분석 데이터와 연결된 라벨입니다. |
WebpushConfig
Webpush 프로토콜 옵션
JSON 표현 |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
필드 | |
---|---|
headers |
웹 푸시 프로토콜에 정의된 HTTP 헤더입니다. 지원되는 헤더는 웹 푸시 프로토콜을 참조하세요. 예: 'TTL': '15'.
|
data |
임의의 키/값 페이로드. 있는 경우
|
notification |
JSON 객체로 표현된 웹 알림 옵션입니다. Web Notification API에 정의된 알림 인스턴스 속성을 지원합니다. 있는 경우 'title' 'body' 필드가 |
fcm_options |
웹용 FCM SDK에서 제공하는 기능의 옵션입니다. |
WebpushFcmOptions
웹용 FCM SDK에서 제공하는 기능의 옵션입니다.
JSON 표현 |
---|
{ "link": string, "analytics_label": string } |
필드 | |
---|---|
link |
사용자가 알림을 클릭하면 열리는 링크입니다. 모든 URL 값은 보안 HTTPS여야 합니다. |
analytics_label |
메시지의 분석 데이터와 연결된 라벨입니다. |
ApnsConfig
Apple 푸시 알림 서비스 관련 옵션
JSON 표현 |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
필드 | |
---|---|
headers |
Apple 푸시 알림 서비스에 정의된 HTTP 요청 헤더입니다. 명시적으로 설정하지 않으면 백엔드는
|
payload |
JSON 객체인 APN 페이로드( |
fcm_options |
iOS용 FCM SDK에서 제공하는 기능의 옵션입니다. |
APNs FcmOptions
iOS용 FCM SDK에서 제공하는 기능의 옵션입니다.
JSON 표현 |
---|
{ "analytics_label": string, "image": string } |
필드 | |
---|---|
analytics_label |
메시지의 분석 데이터와 연결된 라벨입니다. |
image |
알림에 표시될 이미지의 URL을 포함합니다. 있는 경우 |
FcmOptions 클래스의 정적 변수
FCM SDK에서 제공하는 기능에 대한 플랫폼 독립 옵션입니다.
JSON 표현 |
---|
{ "analytics_label": string } |
필드 | |
---|---|
analytics_label |
메시지의 분석 데이터와 연결된 라벨입니다. |
메소드 |
|
---|---|
|
지정된 타겟 (등록 토큰, 주제 또는 조건)에 메시지를 전송합니다. |