안드로이드 앱에서 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 클래스나 MainActivity의 onCreate())에 이 함수를 호출하세요.
- 이렇게 하면 처음 설치 후에도 기존 토큰을 바로 가져와 저장할 수 있습니다.
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! 🚀
반응형
'IT관련 > Android Kotlin' 카테고리의 다른 글
| Firebase에서 KTX란 무엇인가? (Android Kotlin 개발자를 위한 정리) (0) | 2026.01.05 |
|---|---|
| 안드로이드 스튜디오 신규 프로젝트 템플릿 정리 (2026년 기준) (0) | 2026.01.03 |
| 안드로이드 스튜디오 북마크(Bookmarks) 단축키 정리 (0) | 2025.12.11 |
| mediaPlayer 이상 현상 (1) | 2025.07.20 |
| easyMP3 메뉴얼 (1) | 2025.06.23 |