-
Notifications
You must be signed in to change notification settings - Fork 5
FCM 사용기
yoosumi edited this page Dec 14, 2022
·
1 revision
약속 일정을 생성/수정/삭제가 되었을 때 해당 약속에 포함되어 있는 다른 사용자들이 이를 알아차릴 수 있도록 알림을 제공하는 기능을 기획했습니다. 기능 구현을 위해 서버가 필요했고, 이 부분을 Firebase Cloud Messaging으로 해결할 수 있었습니다.
무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션으로, 모든 사용자에게 알림 메세지를 전송할 수 있습니다.
동작 원리
![](https://user-images.githubusercontent.com/67852426/206597265-92b31913-ea94-438a-8691-ff74adb66a56.png)
- 송신자가 HTTP Post Request 메시지를 요청한다.
- FCM Backend Server에서, 메시지의 이상 유무에 따라 적절한 응답을 한다.
- FCM Backend Server에서 우선순위나 앱과의 통신 가능 여부를 고려하여 실제 클라우드 메시지를 수신자에 보낸다.
- 수신자는 받은 메시지를 적당히 처리하고 응답 메시지를 보낸다.
HTTP 메시지의 구조
![](https://user-images.githubusercontent.com/67852426/206597205-3b3623fb-b2c1-4ad2-8176-2858dcbdfac2.png)
토큰 발급 및 저장
사용자가 처음 로그인을 하면 서버에 요청을 보내 토큰을 얻게되고, 사용자 정보에 저장됩니다.
메시지 전송
약속을 생성/수정/삭제를 한 사용자는 송신자의 입장이 되어 FCM에 HTTP 메시지 요청을 합니다. HTTP 통신은 Retrofit을 이용했습니다. 이후 FCM 서버에서 요청받은 메시지를 토큰에 해당하는 단말기에 전송합니다.
메시지 수신
FirebaseMessagingService를 상속받는 서비스를 만들어주었습니다. 오버라이드 함수 onMessageReceived()는 클라우드 서버에서 메시지를 전송하면 자동으로 호출되고, 이 함수에 알림을 띄우는 로직을 작성했습니다.
![](https://user-images.githubusercontent.com/67852426/206597637-58a5d232-e464-424a-a8ec-ed0e3e8ca8d2.gif)
약속을 생성하면 약속에 초대된 멤버는 알림을 받을 수 있습니다.