IT관련/Android Kotlin

Firebase FCM 토큰을 저장하지 못했을 때, 다시 가져오는 방법

파란하늘999 2026. 1. 6. 10:28

안드로이드 앱에서 Firebase Cloud Messaging(FCM)을 사용하다 보면, 앱 설치 직후 생성된 토큰을 실수로 저장하지 못하는 경우가 있어요.

걱정 마세요! FCM 토큰은 앱이 설치된 상태에서 언제든지 다시 조회할 수 있습니다.

토큰은 이미 기기에 존재하고 있으며, 별도의 재생성 없이 바로 가져올 수 있어요.

 

이 포스트에서는 Kotlin 기반으로 FCM 토큰을 다시 가져오는 방법을 자세히 설명하겠습니다.

(공식 Firebase 문서 기준으로 최신 방법입니다.)

1. FCM 토큰이란?

  • 앱 설치 시 FCM SDK가 자동으로 등록 토큰(Registration Token) 을 생성합니다.
  • 이 토큰은 푸시 알림을 특정 기기로 보내기 위해 필요합니다.
  • 토큰은 앱 재시작, 백그라운드 실행 중에도 유지되며, 필요할 때마다 조회 가능합니다.
  • 토큰이 갱신될 때는 onNewToken() 메서드가 호출되니, 거기서도 저장 로직을 추가하는 게 좋습니다.

2. 토큰 다시 가져오는 코드 (Kotlin)

FirebaseMessaging SDK를 사용 중이라면, 아래 코드로 현재 토큰을 조회하세요.

import com.google.firebase.messaging.FirebaseMessaging

fun getFcmToken() {
    FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
        if (!task.isSuccessful) {
            // 실패 처리 (네트워크 문제 등)
            Log.w("FCM", "Fetching FCM registration token failed", task.exception)
            return@addOnCompleteListener
        }

        // 현재 FCM 토큰 가져오기
        val token = task.result
        Log.d("FCM", "현재 FCM 토큰: $token")

        // 여기서 토큰을 SharedPreferences, 서버 등에 저장하세요!
        // 예: SharedPreferences에 저장
        val sharedPref = getSharedPreferences("app_prefs", Context.MODE_PRIVATE)
        with(sharedPref.edit()) {
            putString("fcm_token", token)
            apply()
        }
    }
}
  • 호출 위치 추천: 앱 시작 시 (예: Application 클래스나 MainActivityonCreate())에 이 함수를 호출하세요.
  • 이렇게 하면 처음 설치 후에도 기존 토큰을 바로 가져와 저장할 수 있습니다.

3. 토큰 갱신 시 자동 저장 (FirebaseMessagingService)

토큰이 새로 생성되거나 갱신될 때를 대비해 FirebaseMessagingService를 구현하세요.

class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        super.onNewToken(token)
        Log.d("FCM", "Refreshed token: $token")

        // 토큰 저장 로직 (서버 전송 등)
        sendTokenToServer(token)
    }

    private fun sendTokenToServer(token: String) {
        // 서버에 토큰 업로드하는 코드
    }
}
  • AndroidManifest.xml에 서비스 등록 잊지 마세요!

4. 추가 팁

  • 토큰 강제 재생성 (테스트용):
    • 앱을 완전히 언인스톨 후 재설치하거나,
    • 앱 데이터 삭제 (설정 > 앱 > 저장공간 > 데이터 삭제)하면 새 토큰이 생성됩니다.
    • 하지만 보통은 getToken() 호출로 충분합니다.
  • 토큰은 기기별로 고유하며, 앱 삭제 시 사라집니다.
  • 공식 문서: Firebase Cloud Messaging - Android 클라이언트 설정

마무르기

저장 실수는 누구나 할 수 있어요. 위 방법으로 간단히 현재 토큰을 가져와 저장하면 됩니다! 만약 에러가 발생하거나 더 구체적인 코드가 필요하시면 댓글로 알려주세요. 😊

 

참고:

Firebase SDK 최신 버전(23.0.0 이상) 기준으로 작성되었습니다. 구버전은 FirebaseInstanceId를 사용했지만, 지금은 deprecated됐어요.

 

Happy Coding! 🚀

반응형