[GCM to FCM Migration 삽질기 #2] Migration 시작

2019. 4. 24. 14:14Programming/Android

반응형

2019/04/29 - [Programming/Android] - GCM to FCM Migration 정리
이 글은 GCM을 사용해서 푸쉬알람을 띄우던 기존의 Legacy코드를 FCM으로 통합할 때 작성하기 시작한 글로, 작업이 완료된 시점에 다시 작성한 글은 위를 참조해주세요. :)

 

Migrate a GCM Client App for Android to Firebase Cloud Messaging페이지를 참조하여 Migration을 시작하도록 하자. 한글로 검색해보면 잘 정리된 문서가 많기는 하지만, 각자의 작업환경이 다르기 때문에 구글의 문서를 참조하는 쪽이 좀 더 수월할 수 있을 듯 하다. 나는 다른 분들의 글을 참조해서 작업하다가, 나의 작업 환경과 이상하게 달라서 구글의 문서를 찬찬히 따라 읽기 시작했다.

 

기본적인 사항은 다음과 같다. 다른 분들의 블로그에서 자세하게 다루고 있기도 하고, Migrate a GCM Client App for Android to Firebase Cloud Messaging 에 잘 나와있기도 하고, Legacy 코드에 따라서 크게 다를 일이 없을 부분이기에 간략하게 기록해놓기만 한다.

 

  1. Firebase Console에 접속해서 기존에 사용하던 GCM 프로젝트를 가져온다.

  2. Android App을 추가하고 google-services.json 파일을 다운받아 Android 앱의 App 폴더에 저장한다.

  3. App의 build.gradle에 설정되어있는 gcm을 fcm으로 변경한다.

    dependencies {
    compile "com.google.android.gms:play-services-gcm:16.1.0"
    }

    이렇게 작성되어있는 코드를

    dependencies {
    compile "com.google.firebase:firebase-messaging:17.5.0"
    }

    이렇게 수정한다.

  4. FCM SDK는 자동으로 필요한 권한을 받아오기 때문에, manifest에 GCM을 위해 선언되어있던 권한 코드(C2D_MESSAGE)를 제거한다.

위의 내용은 Legacy 코드가 어떻게 작성되어있건, 별반 다르지 않은 사항이다. 나의 Legacy 코드는 어째서인지, gcm과 관련된 의존성을 gradle에서 선언하는 게 아니라 jar파일로 받아서 참조하고 있었다. 이유를 찾다가 도무지 못 찾아서 일단 삭제는 해놨지만... 여기까지가 Migrate a GCM Client App for Android to Firebase Cloud Messaging에서 설명하는 4번까지의 과정이다.

 

나의 경우는 5번의 'Next steps and optional migration tasks' 단계가 조금 골치가 아팠다. 다른 분들의 정리된 글들을 참조하다보면 항상 이 부분이 문제였다. 이 부분을 이렇게 고치면 됩니다! 라고 설명되어있는데, 내 Legacy 코드에서는 아무리 검색해도 안나오는 것이다. 전임자가 뭔가를 잘못 구현해놨나, 처음부터 다시 구현하는게 나으려나, 같은 생각이 들 때 쯔음 찬찬히 다시 읽어보니 5번에는 다음과 같은 내용이 적혀있었다.

일반적으로 InstanceIDListenerService를 통합할 필요가 있어요.
선택적으로(필요하다면) GcmListenerService를 통합해야 해요.
선택적으로(필요하다면) GcmPubSub 사용하는 부분을 업데이트해야 해요.

 

그렇다. Next steps and optional migration tasks이기 때문에, Legacy 코드에 따라서 Migration해야 하는 내용이 각각 다를 수 있다. 내 Legacy 코드에는 InstanceIDListenerServiceGcmPubSub이 없었던 것도 단번에 설명된다. ' ㅅ')-3

 

또한 5번의 각 항목을 클릭하면 변경해야하는 내용이 세세하게 나와있으므로, 참조하여 구현하도록 하자.

내가 필요한 내용은 Migrate your GcmListenerService였다.

반응형