본문 바로가기
개발 공부 기록하기/- Android

FCM Push Notification with Postman Part1

by soulduse 2021. 1. 18.
반응형

Firebase Cloud Messaging(FCM) 그리고 Postman과 Terminal에서 푸시 알람을 보내보도록 하자

안드로이드에서 푸시 알람을 처리하기 위한 방식으로 보통 FCM을 사용하게 됩니다.

 

앱에서 Push 개발을 하는건 크게 문제 없지만 내가 만든 코드가 잘 동작하는지 확인을 해볼 필요가 있는데

 

이번 포스팅에서는 어떻게 그 작업을 수월하게 할 것인지 정리해보는 시간을 가지기로 했습니다.

 

순차적으로 풀어가는 방식이 아닌, 바로 포스트 작성일 기준 최신버전 사용법을 알고 싶으신분은

FCM Push Notification(HTTP v1) with OAuth 2.0 Playground / Postman / Terminal - Part2 포스팅을 참조해주세요 

 

FCM 푸시 알림을 테스트 하는 방법

1. Firebase 콘솔에서 푸시를 보내는 방법

  • 이 방식은 가장 간단하지만 알림 메세지와 추가 데이터 그리고 채널 정도만 전송할 수 있습니다.
  • 간단하게 알람이 가는지 데이터가 잘 받아지는지 정도만 테스트 해보려면 추천합니다.

 

2. 레거시 FCM HTTP 프로토콜 + Postman 또는 터미널을 사용

  • 유연하지 않아서인지 API가 단순한편이라 처음에는 쉬울 수(?) 있습니다.
  • 플랫폼별 구분을 하여 내려줘야하는 경우가 생긴다면, 별도로 룰을 정하여 서버 + 클라이언트가 약속한 형태로 가공해서 사용해야됩니다.(번거롭고 서로가 피곤해집니다)
  • 기 그룹 메세징을 사용하는 앱의 경우에는 기존 Legacy API를 사용하여 기기 그룹을 관리(생성, 업데이트 등)해야 합니다.

 

3. FCM HTTP v1 API + Postman 또는 터미널을 사용

Firebase FCM문서에서는 HTTP v1을 사용하도록 권장하고 있는데 이점은 아래와 같이 설명하고 있습니다.

  • 액세스 토큰을 통한 보안 향상
  • 보다 효율적인 플랫폼에 따른 메세지 맞춤설정
  • 새 클라이언트 플랫폼 버전을 위한 확장성 강화 및 미래 경쟁력 확보

아무래도 플랫폼별로 유연한 처리가 가능하기 때문에 관리와 확장성에 용이한 것 같습니다.

WARRING : 만약 기존 앱에서 legacy API를 사용하고 있었다면 메세지 보내는 기능은 있지만 관리는 지원하지 않는다고 합니다.

 

Firebase 콘솔에서 푸시를 보내는 방법

  • Firebase 콘솔로 이동 > 프로젝트를 선택 > Cloud Messaging > 새 알림을 눌러 메세지 생성
  • 알림 제목, 텍스트를 입력 > 다음
  • 타겟 설정 > 앱 또는 주제로 설정 > 다음
  • 전송 시점 설정 > 다음
  • 전환 이벤트가 필요하다면 넣고 아니면 패스
  • 추가 옵션에서 추가하고자 할 데이터가 있다면 추가 > 검토 버튼 클릭

 

레거시 FCM HTTP 프로토콜 + Postman 또는 터미널을 사용

콘솔에서 보내는 Push를 포스트맨이나 터미널을 통해서도 Push를 발송할 수 있습니다.

 

  • Firebase 콘솔 > 프로젝트 설정 > 클라우트 메세징 이동

  • 서버 키를 복사합니다.

 

👉 사용할 포스트맨  상세 정보는 아래와 같습니다.

Endpoint : https://fcm.googleapis.com/fcm/send
Method : POST
Headers :
  - Authorization : key = <server_key>
  - Content-Type : application/json

 

👉 포스트맨으로 메세지를 전송해봅니다.

{
    "to": "FCM_TOKEN_또는_TOPIC을_적습니다.",
    "notification": {
        "title": "Breaking News",
        "body": "New news story available."
    }
}

 

👉 터미널으로 메세지를 전송해봅니다.

curl --location --request POST 'https://fcm.googleapis.com/fcm/send' \
--header 'Authorization: key=< Server Key >' \
--header 'Content-Type: application/json' \
--data-raw '{
"to" : "FCM_TOKEN_또는_TOPIC을_적습니다.",
"notification" : {
   "body" : "Breaking News",
   "title": "New news story available."
}
}'

 

👉 포스트맨으로 메세지를 전송해봅니다.(커스텀)

커스텀으로 data라는 객체를 Json Body에 추가하였습니다.

notification이 푸시에 표시되는 것과 관련된 내용이라면, 푸시를 눌러서 후속처리 할때

data에 필요한 데이터를 넣어서 처리하면 좋겠죠? 👍 안드로이드에서도 그대로 받을 수 있답니다.

remoteMessage 내부에 존재하는 data, Map<String, String> 형태로 존재하고있다.

{
    "to": "FCM_TOKEN_또는_TOPIC을_적습니다.",
    "data" : {
       "body" : "Body of Your Notification in Data",
       "title": "Title of Your Notification in Title",
       "key_1" : "Value for key_1",
       "key_2" : "Value for key_2"
   }
}

👉 터미널으로 메세지를 전송해봅니다.(커스텀)

curl --location --request POST 'https://fcm.googleapis.com/fcm/send' \
--header 'Authorization: key=< Server Key >' \
--header 'Content-Type: application/json' \
--data-raw '{
"to" : "FCM_TOKEN_또는_TOPIC을_적습니다.",
"data" : {
    "body" : "Body of Your Notification in Data",
    "title": "Title of Your Notification in Title",
    "key_1" : "Value for key_1",
    "key_2" : "Value for key_2"
}
}'

 

기타

  • to
    • 메세지의 수신자를 지정하는 역할을 합니다. 
    • 등록된 특정 디바이스 토큰, 기기그룹 또는 토픽으로 Push를 보낼 수 있습니다.
    • 주의사항으로는 토픽을 보낼시에는 /topics/<토픽명>과 같이 앞에 /topics/가 붙어야 합니다.
  • notification
    • 사용자에게 표시되는 알림 페이로드의 키-쌍 값을 지정합니다. (푸시를 보내면 알람으로 표시되는 영역의 데이터라 보시면 됩니다.)
  • data
    • 파라미터로 내가 추가로 넘기고자 하는 값들을 넘길 수 있습니다.
    • 알람을 열었을때 특정 페이지로 이동하여 내가 설정한 값으로 무엇인가를(?) 처리할때 사용하면 좋습니다.
    • 예를들어 푸시알람을 열었을때, 게시판 상세페이지로 가야하고 그 상세 내용을 보려면 게시판 ID로 게시판 상세보기 API를 호출해야되는 경우 사용할 수 있겠죠. 🤗
  • ETC...
    • 이외에 다양한 기능들이 많이 있으니 Legacy API를 사용하는 경우 Firebase 공식 문서를 참고하면더 상세한 정보를 얻을 수 있습니다. 

 

마치며

Firebase 콘솔로 푸시를 보내는 방법과, Legacy API를 포스트맨과 터미널에서 사용해보는 방법을 사용할 수 있게되었습니다.

다음편에는 구글에서 권장하고 있는 최신 HTTP v1 방식 사용법에 대해서 알아 보도록 해요 😄

 

긴글 읽어주셔서 감사합니다. ❤️

 

 

참고

firebase.google.com/docs/cloud-messaging/server

firebase.google.com/docs/cloud-messaging/migrate-v1

firebase.google.com/docs/cloud-messaging/http-server-ref

apoorv487.medium.com/testing-fcm-push-notification-through-postman-terminal-part-1-5c2df94e6c8d

firebase.google.com/docs/cloud-messaging/android/receive

반응형