본문 바로가기
플러터

FCM .. 알림 설정

by s2jinny 2024. 3. 17.

내가 구현해야할 알림 설정 이론 공부. 이론만 빠삭할듯 

1. 클라이언트에서 fcm 에 등록을 요청한다. 

2. fcm 은 token 을 클라이언트에게 발급한다.

3. 클라이언트는 앱 서버에 자신의 정보와 해당 토큰을 전달하고 서버는 이를 맵핑하여 저장한다.

4. 맵핑된 정보를 토대로 앱 서버는 푸시알림을 보내고 싶을 때 클라이언트의 요청 없이 fcm에 요청을 보낸다. 

5. fcm은 앱 서버에서 받은 토큰으로 해당 클라이언트를 찾아 푸시알림을 보낸다. 

 

클라이언트가 가진 앱마다 fcm에서 받은 토큰은 모두 다르다! 토큰은 스마트폰자체에서 fcm으로 요청하는 것이 아닌 설치된 앱에서 요청을 하니까요.. 

그래서 앱 서버가 토큰을 알게 되면 클라이언트의 요청을 받을 필요가 없어짐 ..

 

프론트에서 해야할 일

fcm 에 앱 등록,

앱 fcm 연동,

서버에 로그인 요청할 때 fcm 토큰 전송(등록) 

서버에 로그아웃 요청할 때 fcm 토큰 전송(삭제) 

앱 실행할 때 로드인되어 있으면 fcm토큰을 서버에 전송 ( 타임스탬프 갱신 ) 

fcm토큰이 갱신될 때 로그인되어있으면 fcm토큰을 서버에 전송 

 

백엔드에서는 

로그인 시 유저fcm 토큰 저장, 

로그아웃 시 유저 fcm토큰 삭제, 

앱 실행 시 유저 fcm 토큰 타임스탬프 갱신

토큰의 신선도 관리

 

fcm 토큰이란

앱이 FCM 서버와 통신하기 위해 사용되는 고유한 식별자

앱은 서버와 통신할 때 토큰을 사용하여 FCM 서버에서 앱을 식별하고, 이를 통해 메시지 전송을 할 수 있다

FCM의 토큰은 앱이 설치된 디바이스마다 고유하다. 앱이 설치된 디바이스를 추가하거나 삭제할 때 토큰이 변경될 수 있다.

서버는 이러한 FCM 토큰을 사용하여 특정 디바이스에 메시지를 전송할 수 있다.

 FCM에 앱을 등록하고, 앱도 FCM과 연동한다.

앱 프론트는 필요할 때 FCM 토큰을 발급받고 백엔드로 보낸다.

백엔드는 토큰을 유저 정보와 연동하여 DB에 보관하다가, 필요할 때 조회해서 Notification Provider에 푸시 알림을 요청한다.

FCM 토큰에 관해

토큰의 만료 : 

FCM 토큰은 정해진 수명이나 갱신 주기가 없다.

따라서, 시간과 관계없이 아래 이벤트가 발생하지 않는다면 만료되지 않는다.

  • 앱이 인스턴스 ID를 삭제한 경우
  • 앱이 새 기기에서 복원되었을 경우
  • 사용자가 앱을 제거 / 재설치한 경우
  • 사용자가 앱 데이터를 지운 경우

토큰 관리 :

  • 서버에 등록 토큰을 저장한다. 
  • 토큰의 신선도 보장을 위해 오래된 등록 토큰을 제거한다.
  • 토큰을 언제 서버에 보낼까?
    • 로그인 시점에 보낸다 or 앱을 실행할 때마다 보낸다.
  • 토큰은 언제 삭제할까? 
    • Provider가 Notfication Server로 푸시 요청을 했을 때, 토큰이 만료되어 에러 메시지가 오는경우, 핸들링하여 그 토큰을 삭제한다.

고려해야 할 부분 :

  • 같은 기기에서 다른 아이디를 쓰는 경우
    • 로그아웃 시점에 서버에서 유저 토큰을 삭제한다.
  • 같은 아이디로 여러 기기를 쓰는 경우
    • 하나의 유저가 여러 토큰을 보유할 수 있게 스키마를 구성한다

 

참고: https://woo0doo.tistory.com/27


https://velog.io/@mywonhyuni/%EA%B8%B0%EB%8A%A5%EA%B5%AC%ED%98%84RN-firebase%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-Push-notification-%EB%A7%8C%EB%93%A4%EA%B8%B0

'플러터' 카테고리의 다른 글

flutter : DioInterceptor  (0) 2024.06.15
flutter : context 가져오기  (0) 2024.06.15
Riverpod 프로바이더 종류  (0) 2024.04.09
bloc  (2) 2024.03.29
플러터 Dart  (0) 2023.10.29