Android

FCM : Firebase Cloud Message 사용

단돈백이원 2022. 5. 18. 08:34

FCM : Firebase Cloud Message

구글 클라우드 서비스 중 한가지이며, 메세징 서비스( Notification 등 )를 제공한다.

프로세스

  1. (클라이언트) FCM 서비스를 사용하는 앱을 디바이스에 설치
  2. ( FCM 클라우드 서버 -> 클라이언트 ) FCM토큰을 발급받음
  3. ( 클라이언트 -> WAS ) 특정 이벤트( 로그인 등 )가 발생하면 FCM으로 메세지 서비스를 이용하려는 WAS에 클라이언트의 토큰을 등록함
  4. ( WAS -> FCM클라우드 서버 ) notification을 push해야하는 이벤트가 발생할 경우 클라이언트의 토큰으로 FCM메세지 형식을 클라우드 서버에 보낸다.
  5. ( 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 서비스를 다운로드하도록 허용할 수 있습니다.