본문 바로가기
Development/Python

FCM 푸시 보내기(HTTP v1) with Python

by Sonagiya 2022. 2. 23.
반응형

푸시를 보내는 방식 확인(legacy, v1)

v1의 장점

  • 액세스 토큰을 통한 보안 향상: HTTP v1 API는 OAuth2 보안 모델에 따라 수명이 짧은 액세스 토큰을 사용합니다. 액세스 토큰이 공개되는 경우에도 악의적으로 사용될 수 있는 시간은 만료되기 전 1시간 정도뿐입니다. 갱신 토큰이 기존 API에서 사용하는 보안 키만큼 자주 전송되지 않으므로 캡처될 가능성이 매우 낮습니다.
  • 보다 효율적인 플랫폼에 따른 메시지 맞춤설정: 메시지 본문의 경우 HTTP v1 API는 모든 대상 인스턴스에 전달되는 공용 키는 물론 플랫폼에 따라 메시지를 맞춤설정할 수 있는 플랫폼별 키가 있습니다. 이러한 키를 사용하면 메시지 하나로 여러 클라이언트 플랫폼에 약간 다른 페이로드를 전송하는 '재정의'를 만들 수 있습니다.
  • 새 클라이언트 플랫폼 버전을 위한 확장성 강화 및 미래 경쟁력 확보: HTTP v1 API는 Apple 플랫폼, Android, 웹에 제공되는 메시지 옵션을 완전히 지원합니다. 플랫폼별로 JSON 페이로드에 자체 정의된 블록이 있으므로 FCM에서 필요에 따라 새 버전과 새 플랫폼으로 API를 확장할 수 있습니다.

간단한 테스트를 할 때는 서버 키와 토큰을 이용하는 legacy방식이 편합니다.

하지만 보내는 데이터 양식의 차이가 있으므로 프로젝트에 적용 및 개발 계획이 있다면 v1으로 해야 합니다.

 

v1 푸시 보내기

ServiceAccountKey.json 획득하기

  • firebase console 접속

 

  • 프로젝트 설정 화면 이동

 

  • 비공개 키 생성 및 다운로드(서비스 계정 > Python > 새 비공개 키 생성 선택)

 

Python 작성하기

새 비공개 키 를 다운로드한 화면에서 Admin SDK 구성 스니펫 코드와 /자바스크립트에서 주제로 메시지 보내기를 조합하여 코드를 작성합니다.

 

send.py

import firebase_admin
from firebase_admin import credentials
from firebase_admin import messaging

cred_path = "test-firebase-adminsdk-enmn8-121aaec091.json"
cred = credentials.Certificate(cred_path)
firebase_admin.initialize_app(cred)

registration_token = 'cBPtDKvuSBK1C7jsu9j5Tk:APA91bE52VQRECUCAILH4XVmLcmMuISbV9QTHZgr3II_03cbuSha9a-MBl5xgop9jlQ6-tSdBRumj5zu8pdwCgvK2ySQXt-RMTQveK34pQjSePRf8TkBtrKDpRK6r27dpPzwA0pSSLIM'
message = messaging.Message(
    notification = messaging.Notification(
        title='title',
        body='body'
    ),
    token=registration_token,
)

response = messaging.send(message)
print('Successfully sent message:', response)

cred_path : "path/to/serviceAccountKey.json"문구를 실제 다 운바은 파일명으로 변경합니다.

registration_token : 앱 구동 후 획득한 token값으로 변경합니다.

(작성한 python 파일과 serviceAccountKey.json 파일을 같은 폴더에 위치하거나 path를 적어 주셔야 합니다.)

 

터미널에서 작성한 python 실행

python3 send.py

 

모바일에서 푸시 확인

반응형

댓글