Spring boot - FCM notification 구현하기

Jieun·2024년 1월 15일

프로젝트 기록

목록 보기
3/5

1. login시 FCM token 저장

  • 기존 로그인 로직에 추가된 부분

  • 기존에 존재하면 update, 없으면 새로 생성해서 save
  • 원래는 로그아웃 시 delete 하면 되는데 SecurityConfig 건드리는게 귀찮으므로 이런 개짓거리를 함
  • 고쳐야 됨

2. comment 작성

댓글 알림이므로 댓글작성 api에서 댓글 작성 완료 후 그 정보를 바탕으로 commentNotification을 호출한다


3. commentNotification


3-1. init

앱서버(백: 스프링) -> FCM -> 클라이언트(프론트)

위 구조에서 FCM에 요청하려면 accessToken이 필요하다

찾아보면

  1. 직접 okhttp를 사용해서 직접 request를 작성
    • 헤더에 토큰도 직접 생성해서 넣음
    • 안에 Notification과 Data도 직접 dto로 형식 지정해서 넣음
  2. FirebaseMessaging에서 제공하는 메소드 사용

두 가지 방식으로 갈리던데 2번으로 하면 access token도 init 과정에서 자동으로 처리해주는 것 같아 2번을 사용했다.
장단점은 잘 모르겟다.
커스텀이 가능한 점..?

3-2. sendMessageTo

  • 로그인 할 때 저장했던 FCM token을 꺼낸다
  • 주어진 정보 기반 Message 생성
  • sendAsync(Message)

3-3. makeMessage

  • Notification : title, content
  • Data : key : value 형식으로 필요한 데이터 삽입

3-4. notificationRepository.save

알람 목록을 제공하기 위해 알람이 생성될 때마다 저장할 테이블
sendMessage를 마치면 Notification 테이블에 저장하는 과정을 거친다.


4. getNotifications

(Controller는 생략)
저장해둔 Notification을 Paging

0개의 댓글