기기 그룹 메시징을 사용하면 한 그룹에 여러 기기를 추가할 수 있습니다. 주제 메시징과 유사하지만 서버에서만 그룹 멤버십이 관리되도록 인증이 포함됩니다. 예를 들어 휴대전화 모델마다 다른 메시지를 보내려면 서버에서 알맞은 그룹에 등록을 추가/삭제하고 각 그룹에 적절한 메시지를 보내면 됩니다. 기기 그룹 메시징은 기기 그룹을 애플리케이션 내에서 직접 관리하는 것이 아니라 서버에서 관리한다는 점에서 주제 메시징과 다릅니다.
알림 키 하나에 허용되는 최대 구성원 수는 20입니다.
기기 그룹 관리
기기 그룹에 메시지를 보내려면 먼저 다음 단계를 거쳐야 합니다.
-
그룹에 추가할 기기마다 등록 토큰을 받습니다.
-
보통은 사용자 1명으로 이루어진 특정 그룹을 그룹의 모든 관련 등록 토큰에 매핑하여 기기 그룹을 식별하는
notification_key
를 만듭니다. 앱 서버에서 알림 키를 만들 수 있습니다.
그룹 생성 및 그룹 삭제, 기기 추가 또는 삭제와 같은 기기 그룹의 기본 관리는 수명이 짧은 토큰을 사용하여 전송 요청을 승인하는 HTTP v1 API를 통해 실행됩니다. 지원되는 키 목록은 기기 그룹 관리 키를 참고하세요.
앱 서버에서 기기 그룹 관리
기기 그룹 만들기
기기 그룹을 만들려면 그룹의 이름 및 기기의 등록 토큰 목록을 제공하는 POST 요청을 보내세요.
그러면 FCM이 기기 그룹을 나타내는 새 notification_key
를 반환합니다.
HTTP POST 요청
https://fcm.googleapis.com/fcm/notification
에 다음과 같이 요청을 보냅니다.
https://fcm.googleapis.com/fcm/notification Content-Type:application/json access_token_auth: true Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA project_id:SENDER_ID { "operation": "create", "notification_key_name": "appUser-Chris", "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...", ... ]
notification_key_name
은 특정 그룹만의 이름 또는 식별자입니다. 예를 들어 사용자 이름일 수 있습니다. notification_key_name
및 notification_key
는 등록 토큰 그룹에서 고유합니다. 동일한 발신자 ID에 여러 클라이언트 앱이 있는 경우 클라이언트 앱마다 notification_key_name
이 달라야 합니다.
그래야 원하는 대상 앱으로만 메시지가 전달됩니다.
응답 형식
요청에 성공하면 다음과 같이 notification_key
가 반환됩니다.
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
notification_key
및 해당하는 notification_key_name
을 저장하여 후속 작업에서 사용하세요.
알림 키 검색하기
기존 알림 키를 검색해야 하는 경우 다음과 같이 GET 요청에서 notification_key_name
을 사용합니다.
https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris Content-Type:application/json access_token_auth: true Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA project_id:SENDER_ID {}
특정 알림 키 이름에 대한 GET 요청마다 서버는 고유한 인코딩 문자열을 반환합니다. 각 문자열이 다른 키로 보일 수 있지만 실제로는 유효한 `notification_key` 값입니다.
기기 그룹에서 기기 추가 및 삭제
기존 그룹에서 기기를 추가하거나 삭제하려면 operation
매개변수가 add
또는 remove
로 설정된 POST 요청을 보내고 추가 또는 삭제할 등록 토큰을 제공하세요.
HTTP POST 요청
예를 들어 등록 토큰이 bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...
인 기기를 appUser-Chris
에 추가하려면 다음 요청을 보냅니다.
{
"operation": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
응답 형식
기기 추가 또는 삭제 요청에 성공하면 다음과 같이 notification_key
가 반환됩니다.
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
기기 그룹 관리 키
다음 표에는 기기 그룹을 만들고 구성원을 추가 및 삭제하기 위한 키가 나와 있습니다.
표 10. 기기 그룹 관리 키
매개변수 | 사용 | 설명 |
---|---|---|
operation |
필수, 문자열 | 실행할 연산입니다. 유효한 값은 create , add , remove 입니다. |
notification_key_name |
필수, 문자열 | 만들거나 수정할 기기 그룹의 사용자 정의 이름입니다. |
notification_key |
필수(create 작업 제외), 문자열
|
기기 그룹의 고유한 식별자입니다. create 작업이 성공했을 때 반환하는 값으로 기기 그룹의 모든 후속 작업에 필요한 값입니다. |
registration_ids |
필수, 문자열 배열 | 추가 또는 삭제할 기기 토큰입니다. 기기 그룹에서 기존 등록 토큰을 모두 삭제하면 FCM에서 기기 그룹을 삭제합니다. |
기기 그룹에 다운스트림 메시지 전송
기기 그룹에 메시지를 보내는 것은 개별 기기에 메시지를 보내는 것과 매우 비슷하며 전송 요청을 승인하는 동일한 방법을 사용합니다. token
필드를 그룹 알림 키로 설정합니다.
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"data":{
"hello": "This is a Firebase Cloud Messaging device group message!"
}
}
}
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
"data":{
"hello": "This is a Firebase Cloud Messaging device group message!"
},
"token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send