[컴][안드로이드] firebase cloud message 사용하기 - client side









Firebase Cloud Messaging, FCM


ref. 1 을 보고 FCM 을 한 번 사용 해 보자. quick-start source 는 여기서 받을 수 있다.

먼저 quick-start source 를 받자. : quickstart-android/messaging



push server 의 동작[ref. 3]

먼저 client 가 push(FCM message) 를 받기 위해서는 client(app) 이 FCM(connection server) 에 등록해야 한다. 등록을 하면 unique id 를 받게 되는데 이것을 registration token 이라 부른다. [ref. 4]

이 registration token 을 받으면, FirebaseInstanceIdService.onTokenRefresh() 가 호출되는데, 여기서 이 token 을 app server 로 보내주면 된다.

app server 는 이 registration token 을 갖고 있고, 나중에 push 를 날릴 때 '누구'에게 날릴지를 FCM connection server 에게 알려줘야 하는데, 그 때 이 token 을 사용하게 된다.




app 만들기

  1. Google Play services 설치 : System Settings > Android SDK > SDK Tools tab > Google Play services(여기, 여기 참조)
  2. target Google APIs : AVD manager 에서 AVD 를 만들 때 target 에 with Google APIs 가 써져 있는 녀석을 선택하자.
  3. quickstart project  : quickstart project 의 파일을 사용해도 된다. 주의할 점은 package 이름만 자신이 원하는 것으로 잘 바꿔 주면 된다.
  4. FirebaseMessagingService : FirebaseMessagingService 를 상속한 service 가 필요: 
    • message 를 처리할 때 사용. 
    • quick-start source 를 사용한다면, MyFirebaseMessagingService.onMessageReceived() 를 확인하자. 기본적으로 log 로만 받은 메시지를 출력하게 되어 있다.
  5. FirebaseInstanceIdService : FirebaseInstanceIdService 를 상속한 service 가 필요: 
    • registration token 을 처리할 때 사용. : onTokenRefresh() 에서 app server 로 registration 을 하도록 한다.(직접구현해야 함.)
    • FCM SDK 가 registration token 을 client 가 처음 실행될 때 만든다. 
  6. FCM 을 사용해야만 하는 앱이라면, android:minSdkVersion="8" 이상으로 해야 한다. 없어도 잘 돌아간다면 상관없다.
  7. Google Play Services 가 설치되어 있는지 check 하는 코드가 필요할 수도 있다.



app 에 Firebase 를 추가하기.

  1. Firebase project 등록 : https://console.firebase.google.com 로 가서 project 를 만들고,
  2. "google-services.json" config file 을 project 에 넣기 : 
    1. 여기서 google-services.json 를 만들어 주는데, 이것을 android project 에 포함시키자.
    2. <project_root>\messaging\app\google-services.json
  3. gradle 설정: quickstart source 에 이미 적용되어 있다. 
    • <project>/build.gradle
      buildscript {
        dependencies {
          // Add this line
          classpath 'com.google.gms:google-services:3.0.0'
        }
      }
      
      <project>/<app-module>/build.gradle
      // Add to the bottom of the file
      apply plugin: 'com.google.gms.google-services'
      
  4. 원하는 서비스관련 package 추가 : quick-start source 에 이미 들어가 있다.
  5. FirebaseMessaging.getInstance().subscribeToTopic("news") 를 하면 firebase console 에서 notification 으로 보내는 noti 를 받을 수 있다.(Topic message에 대한 이야기는 '목차 3.' 을 확인하자.)










실행하기

  • GenyMotion emulator 로 할려면, google play service 가 동작하도록 하고(여기 참고) test 하도록 하자.
    • http://opengapps.org/ 에서 x86_* 용 android open-gapps 를 설치하고 reboot 하면 된다. 참고로, open_gapps-x86-5.1-nano-*.zip 에도 google play service 가 들어가 있다.
  • Firebase console 에서 notification 으로 message 를 client 로 보낼 수 있다. (아래 그림 참조)
  • quick-start example 을 썼다면 logcat 으로 확인할 수 있다.(noti 를 받고 싶다면, MyFirebaseMessagingService.onMessageReceived() 를 수정해주자.)





여러기 기기로 message 보내기[ref. 5]

FCM 은 다음 2가지 방법을 제공한다.
  1. Topic messaging
  2. Device group messaging






FCM server side





References

  1. Add Firebase to your Android Project  |  Firebase
  2. Set Up a Firebase Cloud Messaging Client App on Android  |  Firebase
  3. Google Cloud Messaging · teocci/android_guides Wiki
  4. Google Cloud Messaging: Overview  |  Cloud Messaging  |  Google Developers
  5. Send Messages to Multiple Devices  |  Firebase

댓글 없음:

댓글 쓰기