C++에서 기기 그룹에 메시지 전송

기기 그룹 메시징을 사용하면 한 그룹에 여러 기기를 추가할 수 있습니다. 주제 메시징과 유사하지만 서버에서만 그룹 멤버십이 관리되도록 인증이 포함됩니다. 예를 들어 휴대전화 모델마다 다른 메시지를 보내려면 서버에서 알맞은 그룹에 등록을 추가/삭제하고 각 그룹에 적절한 메시지를 보내면 됩니다. 기기 그룹 메시징은 기기 그룹을 애플리케이션 내에서 직접 관리하는 것이 아니라 서버에서 관리한다는 점에서 주제 메시징과 다릅니다.

알림 키 하나에 허용되는 최대 구성원 수는 20입니다.

기기 그룹 관리

기기 그룹에 메시지를 보내려면 먼저 다음 단계를 거쳐야 합니다.

  1. 그룹에 추가할 기기마다 등록 토큰을 받습니다.

  2. 보통은 사용자 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_namenotification_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에서 기기 그룹을 삭제합니다.

기기 그룹에 다운스트림 메시지 전송

기기 그룹에 메시지를 보내려면 HTTP v1 API를 사용하세요. 현재 HTTP 또는 XMPP에 지원 중단된 기존 전송 API 또는 기존 프로토콜을 기반으로 하는 이전 버전의 Node.js용 Firebase Admin SDK를 사용하는 기기 그룹에 전송하는 경우 가능한 한 빨리 HTTP v1 API로 이전하는 것이 좋습니다. 2024년 6월에 기존 전송 API가 사용 중지 및 삭제됩니다.

기기 그룹에 메시지를 보내는 것은 개별 기기에 메시지를 보내는 것과 매우 비슷하며 전송 요청을 승인하는 동일한 방법을 사용합니다. token 필드를 그룹 알림 키로 설정합니다.

REST

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 명령어

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