이번 포스팅에서는 FCM을 사용하기 위한 Client 구현에 대해서 포스팅 해 보겠습니다.
1. FCM이란?
Firebase Cloud Message의 약자로, 다양한 플렛폼에 메세지를 전송할 수 있는 메세징 솔루션입니다.
일부 기능을 위해선 유료로 이용해야 하지만, 대부분의 경우는 무료로 해결할 수 있습니다.
Firebase에서 미들서버 역활을 하는데, 메세징 솔루션까지 제공하므로 개발자들은 서버를 직접 구축할 필요 없이
매우 편리하게 메세징 서비스를 구축할 수 있다는 장점이 있습니다.
거기에 애널리틱스를 통한 분석기능까지 동시에 사용할 수 있으니, Android application 개발에선 빠질 수 없는 요소이죠.
2. FCM 적용하기
2-0. Firebase console 설정
Firebase console project가 필요합니다.
프로젝트르 생성한 후, FCM을 이용할 앱을 등록하면 됩니다.
Android 패키지 이름은 Manifest의 패키지명이 아니라, App level gradle에 있는 application id를 입력하셔야 합니다.
이부분이 번역되면서 조금 헷갈리게 되어 있은지 조심하시기 바랍니다.
Firebase에서는 application id로 해당 패키지를 구분하니, 다르게 입력한다면 전송이 안될수도 있습니다.
FCM만 이용하신다면, 디버그 서명 인증서는 입력하지 않아도 사용할 수 있습니다.
이후 google-service.json을 해당 프로젝트의 app폴더안에 위치시키면 됩니다.
해당 파일을 뜯어보면 firebase project에 대한 정보가 들어있는데요,
아래에 서술할 의존성을 입력하면 해당 파일을 빌드하는 과정에서 읽어, FirebaseApp의 싱글턴 인스턴스를 자동으로 생성하게 됩니다.
2-1. 의존성 추가
App level gradle에 다음의 의존성을 추가합니다.
implementation platform('com.google.firebase:firebase-bom:29.0.3')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-analytics'
platform으로 firebase-bom을 추가하면 장점은
firebase 플랫폼의 여러 의존성들을 한번의 묶음으로 관리해 주기 때문에,
crashlytics나 remoteconfig등 여러개를 각각 버전관리를 해 줄 필요없이 한번에 버전관리가 가능합니다.
그리고 projecte level gradle에 다음을 입력합니다.
dependencies{
classpath 'com.google.gms:google-services:4.3.10'
}
2-2. Manifest에 service 등록
FCM을 핸들링하는 FirebaseMessagingService클래스는 EnhancedIntentService를 상속받으며 결국 부모는 Service입니다.
그러므로 Service를 사용하기 위해 Menifest에 등록해야 합니다.
<application
//...
<service
android:name=".MyFirebaseMessagingService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
//...
</application>
2-3. FirebaseMessagingService를 구현하는 Service 생성
class MyFirebaseMessagingService(): FirebaseMessagingService() {
override fun onMessageReceived(msg: RemoteMessage) {
}
override fun onNewToken(token: String) {
}
}
onMessageReceived()
FCM에서 전송한 메세지는 RemoteMessage 객체에 담겨서 onMessageRecevied로 받게 됩니다.
보통 notifycation과 연계해서 사용하게 되고, 백그라운드 작업용으로 사용하기도 합니다.
onNewToken
Token은 주로 최초 설치하거나, 데이터를 삭제하고 앱에 진입하게 되면 발급되게 됩니다.
토큰이 발행됨을 감지하는게 onNewToken 메서드입니다.
참고로, 앱에 진입하자마자 실행되므로, 토큰을 서버에 저장해야 한다면 흐름제어가 필요합니다.
3. 마치며
더 자세한 내용은 공식문서를 참조해 주세요!
https://firebase.google.com/docs/cloud-messaging
'IDE & Framework > Android' 카테고리의 다른 글
[짧] Android aar에 application proguard 규칙 적용시키기 (0) | 2022.04.07 |
---|---|
[Kotlin] Android Room Database 기본 예제 (0) | 2022.03.01 |
Android Log 라이브러리 Timber (0) | 2022.02.24 |
Android Log 라이브러리 Logger (0) | 2022.02.24 |
Android Proguard (0) | 2022.02.20 |