개발 공부 기록하기/- Android

FCM Push Notification with Postman Part1

soulduse 2021. 1. 18. 22:21

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

반응형