FCM을 사용해서 메시지를 보내는 과정


  1. 토큰 요청 및 획득

    먼저 사용자가 앱을 설치하고 최초 실행시 토큰을 얻기위해 클라우드 서버에 요청을 보내고 토큰을 획득한다.

    토큰은 기기 별로 고유한 키 값으로 토큰을 통해 메시지를 받을 수 있다.

  2. 서버에 토큰 저장

    획득한 토큰을 서버로 전송하여 저장한다. (우리 프로젝트에서는 Firestore DB에 저장)

  3. 토큰을 이용해 메시지 전송 요청

    서버에서 FCM 서버로 토큰을 이용해 메시지 전송을 요청한다.

  4. 메시지 전송

    FCM 서버는 요청받은 메시지를 토큰에 해당하는 기기에 전송한다.

  5. 리스너를 통해 메시지 수신

    앱이 실행 중이 아니더라도 리스너를 통해 메시지를 수신할 수 있다.

    https://maejing.tistory.com/entry/Android-FCM을-이용해-Push-구현하기

    https://maejing.tistory.com/entry/Android-FCM을-이용해-Push-구현하기

Android Client App


메시지를 받을 클라이언트이다. 기기의 고유한 토큰이 생성되면 이를 서버에 저장하고, FCM 서버로 부터 메시지가 오면 알림을 띄울 수 있다. 클라이언트 앱에서 수행 될 작업을 정리하면 다음과 같고 추가적으로 Android 13(API 수준 33)에서는 Notification 런타임 권한이 추가되어 해당 처리가 필요하다.

Service 생성

FirebaseMessagingService를 상속받는 서비스를 만들고, 메소드를 재정의 한다.

class MessagingService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        // 서버에 토큰 저장
    }

    override fun onMessageReceived(message: RemoteMessage) {
        // 메시지 처리
				// 알림 띄우기
    }
}