GCM 을 FCM Migration 하기

반응형

As of April 10, 2018, Google has deprecated GCM. The GCM server and client APIs are deprecated and will be removed as soon as April 11, 2019. Migrate GCM apps to Firebase Cloud Messaging (FCM), which inherits the reliable and scalable GCM infrastructure, plus many new features. See the migration guide to learn more.


https://developers.google.com/cloud-messaging/android/android-migrate-fcm


구글에서는 기존 GCM서비스를 19년 4월에 종료 시키고 FCM으로 push서비스를 통합한다.

기존 GCM 기반에 token(reg_id)를 발급받아 많은 단말들을 서비스 하고 있는 상황에서 FCM으로 어떻게 전환하는지를 정리해 봤다.


1. AS-IS

1) 기존 GCM 개발자 콘솔에서 프로젝트를 생성 후 GCM Client Key, GCM Server Key를 발급받는다.

2) 단말에서 GCM Client Key를 활용하여 App을 구현하고 서버에 Push발송 기능에 GCM Server key를 활용하여 기능을 구현한다.

3) 단말은 GCM Server에 GCM Client key를 이용하여 GCM token을 발급받는다.

4) 발급받은 GCM token값을 서비스 서버쪽에 단말정보에 등록한다.

5) 서비스 서버는 push발급을 위해 GCM token과 GCM 서버 key를 활용해 GCM Server에 push를 요청한다.

6) GCM서버는 push를 발송하고 해당 단말은 push를 수신한다.



2. TO-BE(GCM을 FCM으로 Migration)

. 서비스 서버에 등록된 기존 GCM token은 FCM Server/Client key로 사용가능
   :Your GCM and FCM registration tokens are mutually interchangeable;
  (동일 프로젝트로 생성시!!!)

→ 동일 프로젝트로 생성시 token을 발급받는 senderID(앱ID)값이 같으므로 GCM/FCM 구분없이 사용이 가능하다.

. GCM token으로 기 GCM key를 발급한 프로젝트에 FCM을 추가 생성하는 경우
  - 단말(GCM key/senderID) - 서버(GCM key) : push 성공

  - 단말(GCM key/senderID) - 서버(FCM key) : push 성공

  - 단말(FCM key/senderID) - 서버(GCM key) : push 성공

  - 단말(FCM key/senderID) - 서버(FCM key) : push 성공  

. GCM token으로 기 GCM key를 발급한 프로젝트와 별개의 프로젝트에 FCM을 추가 생성하는 경우 - 단말(GCM key/A senderID) - 서버(B FCM key) : push 실패(mismatch)

→ Client Key와 Server Key가 매핑이 되는게 아니라 프로젝트의 앱ID(senderID)와 해당 Server Key가 매핑된다.
    즉, A프로젝트에 senderID로 발급받은 gcm/fcm token에 대해 같은 프로젝트 하단에 발급된 GCM/FCM Server key로 발송시에는 성공이지만
         A프로젝트에 senderID로 발급받은 gcm/fcm token에 대해 B프로젝트에서 발급한 앱 ID(senderID) 하단에 발급된 GCM/FCM Server key 로 발송시에는 실패(mismatch)가 난다.


https://developers.google.com/cloud-messaging/faq


Migration 순서는 다음과 같다.

1) 구글 계정으로 로그인 후, https://console.firebase.google.com/ 에 접속하여 프로젝트를 추가한다.

2) 프로젝트 이름에 "기존 프로젝트에 Firebase 추가" 를 선택하여 기존 GCM이 생성되어 서비스 중인 프로젝트를 선택한다.

3) 기존 프로젝트에 Firebase가 추가되며(기존 GCM서비스에는 영향을 주지 않음)

4) 발급된 key값을 보면 기존 GCM Client/Server key외에 FCM용 Client key, Web key, Server key가 생성되었음을 확인할 수 있다. 

https://console.cloud.google.com/projectselector/apis/credentials?hl=ko&supportedpurview=project&angularJsUrl=%2Fprojectselector%2Fapis%2Fcredentials%3Fhl%3Dko%26supportedpurview%3Dproject

5) 쉽게 생각하면 프로젝트내의 FCM/GCM key끼리는 상호호환된다고 보면 된다. Client GCM/FCM key는 Server GCM/FCM key와 상호호환( FCM의 이전서버키, 서버키도 호환)

6) 서비스 서버의 push 기능의 server key값과 endpoint url을 FCM용으로 변경한다.

7) 단말 App update를 통해 GCM Client module 및 Key를 FCM Client module 및 key로 업데이트 한다.-기존 GCM token값으로 서비스

8) 6,7번 사이에 반영 시점 gap이 있어도 push서비스에는 영향을 주지 않음.

9) 8번 이후 신규 단말은 FCM token값을 등록하여 GCM token과 FCM token이 공존하나 서비스에 영향이 없다.






반응형

Top