Android
FCM : Firebase Cloud Message 사용
단돈백이원
2022. 5. 18. 08:34
FCM : Firebase Cloud Message
구글 클라우드 서비스 중 한가지이며, 메세징 서비스( Notification 등 )를 제공한다.
프로세스
- (클라이언트) FCM 서비스를 사용하는 앱을 디바이스에 설치
- ( FCM 클라우드 서버 -> 클라이언트 ) FCM토큰을 발급받음
- ( 클라이언트 -> WAS ) 특정 이벤트( 로그인 등 )가 발생하면 FCM으로 메세지 서비스를 이용하려는 WAS에 클라이언트의 토큰을 등록함
- ( WAS -> FCM클라우드 서버 ) notification을 push해야하는 이벤트가 발생할 경우 클라이언트의 토큰으로 FCM메세지 형식을 클라우드 서버에 보낸다.
- ( FCM 클라우드 서버 -> 클라이언트 ) FCM서버에서 등록된 토큰으로 클라이언트를 구분하여 메세지를 보낸다.
FCM 토큰 발급
FCM 토큰은
FirebaseInstanceId.getInstance()
(구),FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener{})
( 현 )으로 읽어온다.FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w("FCM TEST", "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast Log.d("FCM TEST", "token: $token") })
FCM 토큰 정보 갱신 유무
- 발급받은 TOKEN( 혹은 FCM INSTANCE )는 앱의 PRIVATE DATA 영역에 저장된다.
- CACHE 삭제시 갱신되지 않음.
- DATA 삭제시 갱신 됨.
- 따라서 데이터 영역이 삭제되는 동작이 발생하면 FCM 토큰 정보가 갱신된다.
- 새 기기에서 앱 복원
- 사용자가 앱 삭제/재설치
- 사용자가 앱 데이터 소거
Device( Android Studio Emulator 등 )가 FCM 사용을 위한 사전조건 : Google Play Service APK 설치 및 구글 서비스 로그인
https://firebase.google.com/docs/cloud-messaging/android/client#sample-play
- Emulator가 Google 서비스( 설정 -> 계정 )에 로그인 되어있어야 한다.
- Emulator 안드로이드 SDK 버전은 Google API 사용 버전이여야한다.( Google Play 버전이면 안된다)
- PUSH 서비스는 Google Play Service APK가 있는지 확인해야한다.
onCreate()
메서드 및onResume()
에서 서비스를 사용할 수 있는지 확인하는게 좋다.- 기기에 호환되는 Google Play 서비스 버전이 없으면 앱에서
GoogleApiAvailability.makeGooglePlayServicesAvailable()
을 호출하여 사용자가 Play 스토어에서 Google Play 서비스를 다운로드하도록 허용할 수 있습니다.