GCM to FCM Migration 정리

2019. 4. 29. 09:11Programming/Android

반응형

이전 글 보기
[GCM to FCM Migration #1] 기존에 사용하던 GCM 코드 확인
[GCM to FCM Migration #2] Migration 시작
[GCM to FCM Migration #3] Legacy 코드를 제거하자!

 

GCM to FCM을 검색해보면 보다 많고 자세한 자료를 찾을 수 있다. 하지만 이 글을 작성하기 시작한 이유는 GCM에 대해 전혀 모르는 상태에서, FCM으로 Migration해야하는 상황에 빠졌기 때문에 정리가 필요하다고 판단했기 때문이다. Migration이 끝나가는 지금 생각해보면 필요한 내용은 Migrate a GCM Client App for Android to Firebase Cloud Messaging에 다 있다.

 

다만 나에게 필요한 내용이 누락되어있었는데, GCMBaseIntentServiceonRegistered, onUnregistered, onMessageGCMRegistrarcheckDevice, checkManifest, register같은 녀석들을 어떻게 처리해야 하는가였다. 답은 간단했다. 더 이상 사용하지 않으므로 제거해주고, 해당 메서드 결과에 따른 처리를 없애주면 된다. (Going on to Firebase cloud messaging(FCM) in Android, D.J's development log을 참조하자.)

 

심플한 결론이 도출되었으므로 다시 한번 따라가면서 GCM으로 구현한 Legacy 코드를 FCM으로 통합해보자. 우선은 Migrate a GCM Client App for Android to Firebase Cloud Messaging페이지를 참조하여 GCM을 제거해준다. 그 다음 Tool > Firebase > Cloud Message를 선택하고, Firebase와 연동을 시작하도록 하자. Assistant의 Connect to Firebase 버튼을 눌러서 Firebase 프로젝트와 연결한다(이 때 연결되는 계정은 Android Studio에 로그인 된 계정이므로 주의하자.). Add FCM to your app을 눌러 FCM을 앱을 추가하는데, 이 때 build.gradle을 기준으로 등록된 앱의 패키지명이 모두 Frebase 프로젝트에 등록된다. 하나의 코드로 여러개의 앱을 생성할 시에는 Assistant를 활용하는게 도움이 된다.

 

그 다음 Assistant의 Handle message항목에 나와있는 예제 코드를 이용하면, 토큰값을 알아낼 수 있다. FCM에서는 이 토큰값을 사용하여 푸쉬 메시지를 보내기 때문에, 알아낸 토큰값을 서버로 전송하기만 하면 된다. 토큰값을 이용해서 메시지가 제대로 전송되는지 확인하기 위해서는, firebase console의 Cloud Message에서 테스트 메시지를 전송해보면 된다. 간단하게 제목과 메시지 내용, 그리고 위에서 알아낸 토큰값을 입력한 후 테스트 메시지를 전송해보자. 앱에서 푸쉬 알람이 오는 것을 볼 수 있을 것이다. (이 내용은 Migrate a GCM Client App for Android to Firebase Cloud Messaging의 5번 Next Steps and optional migration tasks 중 Usually required: migrate your InstanceIDListnerService에 해당하는 내용이다.)

 

이제 안드로이드에서 할 일은 많지 않다. GcmListenerService를 이용해서 푸쉬 메시지로 도착한 내용을 커스터마이징 해줬다면, GcmListenerServiceFirebaseMessagingService로 바꿔줘야 할 것이다. 또 GcmPubSub을 사용하는 경우에는 기존의 'topics' 접두어를 사용하던 부분을 제거하고, subscribesubscribeToTopic으로, unsubscribeunsubscribeToTopic으로 변경해줘야 할 것이다. Legacy코드에 따라서 옵셔널하게 처리되는 부분은 Migrate a GCM Client App for Android to Firebase Cloud Messaging 페이지의 5번 항목에 해당된다.

 

위의 과정을 진행하면 별 문제없이 GCM에서 FCM으로 통합이 가능할 것이다. :)

반응형