profile image

L o a d i n g . . .

반응형

FCM이란?

FCM이란 구글 파이어 베이스에서 제공하는 push 서비스로 간단하게 push 구현을 지원해 줍니다.

많은 레퍼런스와 친절한 문서를 제공하고 있어 사용하기가 아주 간편합니다.

push 관련해서 많은 유료 라이브러리가 있지만 모두 FCM을 기초로 하고 있지 않을까 싶습니다. 실제로 제가 회사에서 사용해본 라이브러리는 FCM을 상속받아서 사용하고 있었습니다.

 

토큰을 이용한 방식

FCM 라이브러리를 추가하면 제일 먼저 확인하는 것이 토큰인데, 이도 알아서 해주기 때문에 우리가 따로 무엇을 구현해줘야 할 필요가 없습니다.

문서대로 오버라이딩 하라는 클래스만 생성해주고 값을 확인해보면 토큰이 제대로 받고 있다는 것을 쉽게 확인할 수 있습니다.

override fun onNewToken(token: String) {
        super.onNewToken(token)
 }

앱에서는 토큰으로 할 것은 없지만, push을 보내는 웹 측은 토큰 값이 꼭 필요합니다.

 

push 메세지 수신

앱이 올라와 있는 경우 push는 onMessageReceived로 호출이 되며 여기서 확인을 할 수 있습니다.

위 onMessageReceived에서 받은 데이터를 토대로 각 이벤트에 맞춰 분기 처리하거나 일반 이벤트 처리를 할 수 있습니다.

그리고 위 onMessageReceived에서 푸쉬 Builder을 실행해서 기기에 푸쉬 알림 ui을 만들어주어야 문제없이 동작을 합니다. 정상동작은 하지 않을 테지만 안 만들어줄 시 crash가 떠서 앱이 죽어버리는 경우가 있습니다.

그리고 이벤트 처리시 중요한 점이 우리가 익히 알고 있는 일반 Intent가 아닌 pendingIntent을 사용해야 한다는 점입니다.

override fun onMessageReceived(remoteMessage: RemoteMessage) {
        super.onMessageReceived(remoteMessage)
    }

push을 구현하면서 아마도 가장 중요한 부분이 이 부분이지 않을까 하네요.

 

흐음...

<이 부분은 사실 저도 잘 모릅니다.. 확인해본 결과를 알려드릴 뿐..>

앱이 켜져 있지 않거나 백그라운드에 내려와 있을 때 push수신은 위 동작을 행하지 않고 manifest에 intent-filter을 설정해둔 액티비티로 바로 이동을 해버립니다.

ui도 알아서 만들어줘서 신경 쓰지 않아도 되었었습니다.

데이터 확인은 받은 Activity에서 Intent로 확인을 할 수 있습니다.

 

push에서 이미지는 어떻게?

모두 이미지가 포함된 push을 받아보셨을 텐데, 이미지는 역시 url을 통해서 받아서 처리를 합니다.

private fun createBitmap(imageUrl: String): Bitmap? {
        if (imageUrl.isNotEmpty()) {
            try {
                val url = URL(imageUrl)
                val connection = url.openConnection() as HttpURLConnection
                connection.doInput = true
                connection.connect() 
                val in2 = connection.inputStream
                return BitmapFactory.decodeStream(in2)
            } catch (e: MalformedURLException) {
                Timber.e("MalformedURLException = $e")
            } catch (e: IOException) {
                Timber.e("IOException = $e")
            }
        }
        return null
    }

url로 받은 이미지 경로를 다시 Bitmap으로 변환하여 보여주어야 합니다.

저는 위와 같이 짜놓았고 물론 구글링을 통해서 얻은 답변이었습니다.

 

마무리

파이어베이스의 FCM을 이용하면 개인 개발자도 손쉽게 push을 만들 수 있고 관리도 할 수 있습니다.

어느 정도는 무료라고 알고 있지만 당연히 어느 수준을 넘게 되면 유료로 전환이 될 것입니다.

파이어 베이스다 보니 물론 파이어 베이스 셋팅은 기본적으로 되어 있어야 합니다.

반응형
복사했습니다!