투케이2K

144. (TWOK/STUDY) [투케이 학습] : Firebase Push V1 메시지 전송 방식 apns payload 페이로드 학습 - 파이어베이스 푸시 알림 본문

투케이2K 학습정리

144. (TWOK/STUDY) [투케이 학습] : Firebase Push V1 메시지 전송 방식 apns payload 페이로드 학습 - 파이어베이스 푸시 알림

투케이2K 2026. 3. 16. 19:14
728x90
반응형

[제 목]

주 제 : 투케이 학습

제 목 : [투케이 학습] : Firebase Push V1 메시지 전송 방식 apns payload 페이로드 학습 - 파이어베이스 푸시 알림

 

[설 명]

-----------------------------------------------------------------------------------------
[구 분]
-----------------------------------------------------------------------------------------

구 분 : 투케이 학습 정리


제 목 : AWS KVS HLS 라이브 비디오 스트리밍 관련 사용 되는 간편 주요 용어 정리


사전) 👉 Firebase Push V1 간단 설명 : 

  >> Firebase Push V1 은 기존 FCM 레거시 HTTP 알림 발송 방식을 대체해 사용할 수 있는 향상 된 푸시 발송 서비스입니다.

  >> FCM V1 기술 관련 내용 : 

    - 액세스 토큰을 통한 보안 향상 : HTTP v1 API는 OAuth2 보안 모델에 따라 수명이 짧은 액세스 토큰을 사용합니다
    - 보다 효율적인 플랫폼에 따른 메시지 맞춤설정 : 메시지 본문의 경우 HTTP v1 API는 모든 대상 인스턴스에 전달되는 공용 키는 물론 플랫폼에 따라 메시지를 맞춤설정할 수 있는 플랫폼별 키 가 있습니다
    - 새 클라이언트 플랫폼 버전을 위한 확장성 강화 및 미래 경쟁력 확보 : HTTP v1 API는 Apple 플랫폼, Android, 웹에 제공되는 메시지 옵션을 완전히 지원합니다
    - 기기 그룹 메시징 관리 지원 제외 : HTTP v1은 기기 그룹에 메시지를 보낼 수 있지만 관리는 지원하지 않습니다

  >> FCM V1 메시지 발송 관련 흐름도 : 

    - 관리자는 파이어베이스 콘솔에서 [비공개 키] 파일 발급 (JSON 파일)
    - 관리자는 서버 특정 디렉토리에 발급 받은 [비공개 키] 를 삽입 및 환경 변수 설정 수행
    - 푸시 서버에서는 [비공개 키] 를 통해 [사용자 인증 수행] 및 푸시 발송에 필요한 [액세스 토큰 발급] 요청
    - 푸시 서버에서는 [액세스 토큰 발급] 이 완료 된 경우 HTTP 요청 [URL 정의], [헤더 값 추가], [메시지 발송 JSON 페이로드] 정의 수행
      $ URL (POST) : https://fcm.googleapis.com/v1/projects/<PROJECT_UNIQUE_ID : 파이어베이스 콘솔에서 확인>/messages:send
      $ Header : Authorization: Bearer <OAUTH_2_ACCESS_TOKEN : 액세스 토큰>
    - 푸시 알림 메시지 발송 실시

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[설 명]
-----------------------------------------------------------------------------------------

-----------------------------------------------------------------
👉 사전) 주요 참고 사항 정리
-----------------------------------------------------------------

1. Android 기기의 특징 정리 : 

  >> 서버의 android.priority 는 전송 우선순위이고, 안드로이드 실제 알림 표시의 중요도 (Heads-up 여부 등) 는 앱에서 생성한 알림 채널의 Importance 에 의해 좌우됩니다. 
  
  >> 중요한 알림이라면 앱 측에서 높은 중요도의 채널을 미리 생성하고 (예: IMPORTANCE_HIGH), 필요 시 channel_id 를 지정하세요.

  >> Android : android.priority → HIGH (즉시) / NORMAL (기본)


2. iOS 기기의 특징 정리 : 

  >> iOS 는 APNs 규격상 진동 패턴을 페이로드로 제어할 수 없습니다. (시스템 동작에 따릅니다)

  >> iOS 기기에서 사용자가 시스템 설정에서 알림음을 ‘진동’ (Vibration) 으로 설정해두었다면, 서버가 FCM/APNs에 "sound": "default" 를 넣어 보내더라도 해당 메시지는 자동으로 “진동” 으로 재생됩니다.

    - iOS 는 사용자 프라이버시·제어권을 우선시하며, 실제로 기본음을 재생할지, 진동으로 바꿀지는 사용자 설정이 우선합니다.
    - 서버 → “기본 알림음 틀어줘” >> iOS → “사용자가 이 앱은 진동만 허용했으니까 진동으로 처리할게”

  >> iOS : apns-priority 헤더 → 10 (즉시) / 5 (백그라운드)


3. Android 와 iOS 의 알림음 요청 시 기기에서 동작 되는 이벤트 정리

-----------------------------------------------------------------
  구분    |     서버에서 기본음 지정 시    |    사용자가 기기에서 진동 지정 시
-----------------------------------------------------------------
  iOS     |  "aps.sound": "default" 기본음 요청 | 무조건 사용자 설정 우선 (진동이 설정 된 경우 진동 출력)
-----------------------------------------------------------------
  Android |  default_sound: true 기본음 요청    | Android도 채널 설정이 우선이며, “진동만” 으로 설정된 채널이면 진동 발생
-----------------------------------------------------------------


4. Firebase 푸시 발송 v1 API 참고 사이트 : 

푸시 발송 규격 : https://firebase.google.com/docs/cloud-messaging/send/v1-api?hl=ko

메시지 페이로드 JSON : https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages

-----------------------------------------------------------------



-----------------------------------------------------------------
✅ 푸시 메시지 전송 엔드포인트 및 헤더 토큰 추가 방법
-----------------------------------------------------------------

URL (POST) : https://fcm.googleapis.com/v1/projects/<PROJECT_UNIQUE_ID : 파이어베이스 콘솔에서 확인>/messages:send

Header : Authorization: Bearer <OAUTH_2_ACCESS_TOKEN : 액세스 토큰>

-----------------------------------------------------------------



-----------------------------------------------------------------
✅ 단일 기기 전송 (기본 알림음 + Android 진동 + 중요도 포함) body 페이로드
-----------------------------------------------------------------

{
  "message": {
    "token": "<device_token>", // 특정 단말기 (android, ios) 푸시 토큰

    "notification": { // 푸시 알림 메시지에 표시 되는 title , message 지정
      "title": "알림 제목",
      "body": "알림 본문입니다."
    },

    "android": { // android 푸시 알림 설정 옵션
      "priority": "HIGH",
      "notification": {
        "default_sound": true, // Android 기본 알림음
        "default_vibrate_timings": true // Android 기본 진동
      }
      /* 또는 커스텀 진동 패턴을 직접 지정하려면 위의 default_vibrate_timings 대신 아래를 사용:
      "notification": {
        "default_sound": true,
        "vibrate_timings": ["0s", "0.5s", "0.2s", "0.5s"]
      }
      */
    },

    "apns": { // iOS 푸시 알림 설정 옵션
      "headers": {
        "apns-priority": "10"
      },
      "payload": {
        "aps": {
          "sound": "default" // iOS 기본 알림음
        }
      }
    }
  }
}


-----------------------------------------------------------------



-----------------------------------------------------------------
✅ 토픽 전송 (여러 기기 브로드캐스트) body 페이로드
-----------------------------------------------------------------

{
  "message": {
    "topic": "news", // 푸시 알림 구독 토픽 지정

    "notification": { // 푸시 알림 메시지에 표시 되는 title , message 지정
      "title": "뉴스 속보",
      "body": "주요 소식을 알려드립니다."
    },

    "android": { // android 푸시 알림 설정 옵션
      "priority": "HIGH",
      "notification": {
        "default_sound": true, // Android 기본 알림음
        "default_vibrate_timings": true // Android 기본 진동
      }
    },

    "apns": { // iOS 푸시 알림 설정 옵션
      "headers": {
        "apns-priority": "10"
      },
      "payload": {
        "aps": {
          "sound": "default" // iOS 기본 알림음
        }
      }
    }
  }
}

-----------------------------------------------------------------

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------

[투케이 학습] : Firebase FCM V1 푸시 알림 전송 방식 학습

https://kkh0977.tistory.com/5029

https://blog.naver.com/kkh0977/223296547559?trackingCode=blog_bloghome_searchlist


[IOS : 파이어베이스 푸시 알림 (firebase push) 환경 적용 방법]

https://kkh0977.tistory.com/1399

https://blog.naver.com/kkh0977/222579428997?trackingCode=blog_bloghome_searchlist


[FCM V1 클라이언트 (Android, Ios) 토큰 유효성 검증 진행]

https://kkh0977.tistory.com/5830

https://blog.naver.com/kkh0977/223404791924?trackingCode=blog_bloghome_searchlist


[talend api 사용해 파이어베이스 푸시 FCM v1 방식 토큰 유효성 검증 http 요청 방법 (Fcm Client Token)]

https://kkh0977.tistory.com/5664

https://blog.naver.com/kkh0977/223382485331?trackingCode=blog_bloghome_searchlist


[Android] Firebase push v1 파이어베이스 푸시 V1 방식 메시지 수신 시 데이터 파싱 이슈

https://kkh0977.tistory.com/5296

https://blog.naver.com/kkh0977/223338727378?trackingCode=blog_bloghome_searchlist

-----------------------------------------------------------------------------------
 
728x90
반응형
Comments