안드로이드에서 푸시 알람을 처리하기 위한 방식으로 보통 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에 필요한 데이터를 넣어서 처리하면 좋겠죠? 👍 안드로이드에서도 그대로 받을 수 있답니다.
{
"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
'개발 공부 기록하기 > - Android' 카테고리의 다른 글
안드로이드 - 배경 투명도 조절하기 (0) | 2021.06.15 |
---|---|
FCM Push Notification(HTTP v1) with OAuth 2.0 Playground / Postman / Terminal - Part2 (9) | 2021.01.19 |
앱 설치화면 보내기 또는 해당 앱 실행하기 (2) | 2019.08.25 |
왜 개발모드일때는 광고가 노출되지 않지? Failed to load ad: 3 (1) | 2019.01.02 |
Intent로 인스타, 유튜브, 앱리뷰 실행시키기 (0) | 2019.01.02 |