[Spring Boot] FCM을 통해 Push 알림 보내기 1

smlee·2023년 3월 29일
0

SpringBoot - JPA

목록 보기
6/8
post-thumbnail

외주를 하며 새로운 과제가 등록이 되면 유저에게 푸쉬 알림(Push Notification)을 전해야 하였다. 이를 위해 FCM(Firebase Cloud Messaging)을 사용하여 해당 기능을 구현하였다. 그렇다면 FCM이란 무엇이며, 어떠한 로직으로 동작하는지를 먼저 정리하고, 다음 포스트에서 어떻게 구현했는지 정리하려고 한다.

FCM (Firebase Cloud Messaging)
파이어베이스 클라우드 메시징은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다.

Push Notification
푸시 알림은 서버에서 유저의 디바이스로 정보를 보내는 기술을 뜻한다.

📖 FCM 주요 용어

  1. 클라이언트 앱(Client App)
    → 안드로이드 단말에서 FCM을 사용하는 앱으로, 푸쉬 알림을 받는 역할

  2. Notification Server
    → 모바일 기기에 push 알림을 전송하는 서버로, 여기서는 FCMNotification Server에 해당된다.

  3. Provider
    → Client App을 위한 서버
    → 필요 시 Notification Server에 요청을 전송하여 Client App에 알림을 보낸다.
    → 여기서는 Spring Boot가 이 역할을 수행한다.

  4. Sender ID
    → Client App에서 Registration Token을 발급 받기 위해 FCM에 전달하는 값으로 사용된다.

  5. Registration Token
    → FCM에서 발급 받은 토큰으로, 앱 서버(Provider)에 전달하여 클라이언트 앱에서 메시지 알림을 전송할 때 사용한다.
    → 앱 서버(Provider)에 Registration Token을 저장하며, 저장된 토큰들 중 비활성화된 토큰은 삭제하는 방식으로 관리하는 것이 권장된다.

☁ FCM을 이용하여 push 알림을 보내는 과정

  1. FCM에 앱을 등록하고, 앱도 FCM과 연동한다.
  2. 앱 프론트는 필요할 때 FCM 토큰을 발급 받고 백엔드로 보낸다.
  3. 백엔드는 토큰을 유저 정보와 연동하여 DB에 보관하다가, 필요할 때 Notification Provider에 요청한다.

FCM Token
푸쉬 알림을 보낼 디바이스를 식별하기 위해 존재한다.
토큰을 DB에 저장하기도 하지만, 성능이 중요한 요소라면 in-memory 저장소도 고려해볼만 하다.

앱 서버(Provider)에서 해야할 일

  1. 로그인 시 유저의 FCM 토큰 저장
  2. 로그아웃 시 유저의 FCM 토큰 삭제
  3. 토큰의 신선도 관리(토큰 갱신 및 업데이트)
  4. Notification Server에 푸쉬 알림 요청

📚 Reference

0개의 댓글