티스토리 뷰

2023.09.13

아래 내용은 기존 FCM API가 구버전으로 더이상 사용이 불가하다.

FCM API는 이제 Access Token을 사용하는 HTTP v1버전으로 변경이 되었다.

 

공식 문서는 여기서 확인할 수 있으며, body에 담아 보내는 메시지 형식도 변경되었으니 참고해야 한다.

Access Token은 Google의 OAuth Playground의 Firebase Clound Messaging API v1에서 발급받을 수 있다.

 

<<<< 아래  >>>>

 

앱에 푸시메시지 테스트가 필요한 경우가 있다. 특히 푸시 메시지를 클릭하여 이벤트 동작을 처리해야하는 경우가 그렇다. 이 경우 이렇게 저렇게 여러번 테스트를 해봐야 할 것이다. 실제 서비스에서는 서버에서 클라이언트 앱으로 메시지를 보내게 되겠지만 단순히 테스트를 위해서는 번거로운 일이다. 메시지 전송이 필요할 때마다 백엔드 개발자를 귀찮게 해야하기 때문이다. 혹은 아직 서버에서 FCM 준비가 안되었을 수도 있다. 이럴 때 유용한 것이 Postman을 사용하는 방법이다.

 

Postman 설정하기

여기서는 Firebase 설정은 이미 마쳤다고 가정하고 메시지를 전송하는 과정만 정리를 하겠다. 아래 화면을 참고하자.

API URL은 https://fcm.googleapis.com/fcm/send이다. 그리고 HTTP Request Metod는 POST로 변경하자.

Header에 넣을 항목들은 아래를 참고하되 Authorization의 value는 key = <FCM SERVER_KEY>로 넣어준다. FCM SERVER KEY는 Firebase 콘솔에서 앱을 만들고 난 후 프로젝트 설정의 클라우드 메시지 탭에서 확인할 수 있다.

 

그 다음은 실제 우리가 FCM을 통해 보낼 데이터를 넣어줘야 한다. Headers 오른쪽 탭인 Body로 이동하자. 메시지 포맷은 raw로 변경하여 JSON 형식으로 작성할 것이다. 아래를 참고하자.

{
    "to": "FCM_TOKEN",
    "notification": {
    	"title": "NOTI_TITLE",
        "body": "NOTI_BODY"
    },
    "data": {
    	"KEY": "VALUE"
    }
}

 

“to”에 해당하는 값은 메시지를 받을 클라이언트의 디바이스 토큰이다. 디바이스 토큰을 가져오는 방법은 플랫폼마다 조금씩 다르겠지만 FirebaseMessaging API의 getToken()과 같은 메서드를 통해 얻을 수 있다. 공식문서에서 해당하는 플랫폼을 선택하여 찾아보면 된다.이제 메시지를 보낼 준비는 사실상 끝났다.

 

메시지 전송하기

Send버튼을 눌러보자. 메시지 전송이 성공했다면 호출 결과가 아래와 같이 나타날 것이다.

 

유효하지 않은 디바이스 토큰이나 서버키로 인해 전송 실패했다면 그에 대한 실패 원인이 표시될 것이다.

 

그렇다면 “to”를 제외한 나머지 키(key)는 무엇일까? 테스를 해봤다면 알 수 있겠지만 “notification” 키의 “title”과 “body”는 클라이언트에서 받은 푸시 알림의 타이틀과 바디에 해당한다. 만약 이 “notification”이 없다면 클라이언트에서 메시지는 수신되더라도 알림은 동작하지 않는다. 아, 물론 앱이 포그라운드에서 동작 중일 때도 푸시 알림은 뜨지 않을 것이다. (앱이 동작 중일 때 푸시를 띄우고 싶다면 추가적인 작업이 필요하다.)

 

커스텀 데이터

마지막으로 “data”는 무엇일까? 여기는 사용자가 정의한 어떤 데이터든 넣을 수 있는 커스텀 영역이다. key/value 형식으로 데이터를 넣을 수 있고, 서버와 클라이언트 간에 미리 약속된 데이터를 이곳에 넣어 주고 받으면 된다. 이를테면 채팅 메시지가 푸시 알림으로 온 경우 클릭 했을 때 해당 채팅방으로 이동해야 한다면, 서버에서 data 안에 필요한 정보를 넣어 보내면 클라이언트에서 받은 정보를 기준으로 이벤트 처리를 해주는 식이다.

 

APNs 토큰을 FCM 토큰으로

마지막으로, 애플 기기로 FCM을 보내야 하는데 가지고 있는 정보가 FCM 토큰이 아닌 APNs 토큰 뿐일 때 사용할 수 있는 API가 있다. APNs 토큰을 FCM 토큰으로 변환해주는 API이다. 여기(Create registration tokens for APNs tokens)에 들어가면 자세한 정보를 알 수 있다.

 

이 정도면 POSTMAN으로 FCM을 전송할 수 있는 가장 기본적인 구성 요소를 다룬 것 같다. 이 방법만 알아도 FCM 테스트가 한결 쉬워지니 알고 있다면 유용할 것이다. 누군가에게 손톱만큼의 도움이 되길 바라며..

 

참조 문서

- Firebase 콘솔: https://console.firebase.google.com/u/0/

- FCM 메시징 정보: https://firebase.google.com/docs/cloud-messaging/concept-options?hl=ko

'프로그래밍' 카테고리의 다른 글

개발자가 사용하는 괄호들의 이름  (0) 2022.09.02
개발자의 코드 유지보수  (2) 2020.11.05
개발자의 공부에 대해서  (0) 2020.05.01
댓글