최근 몇 년 사이 모바일 앱의 발전과 함께 사용자와의 소통 방법도 많이 변화하였습니다. 특히,
푸시 알림(Push Notification)은 사용자와의 효과적인 커뮤니케이션 방법으로 자리잡았습니다.
파이어베이스 클라우드 메시징(FCM)은 구글이 제공하는 푸시 알림 서비스로, 애플리케이션에 쉽게 통합할 수 있어
많은 개발자에게 사랑받고 있습니다. 이 글에서는 코틀린을 사용한 안드로이드 앱 개발 과정에서 FCM을 설정하고 사용하는 방법에 대해
자세히 설명하겠습니다.
1. Firebase Cloud Messaging(FCM) 소개
FCM은 애플리케이션 서버와 클라이언트 앱 간에 메시지를 전송하기 위한 서비스입니다. 이를 통해 개발자는
실시간으로 사용자에게 알림을 발송할 수 있으며, 애플리케이션의 특정 이벤트에 대한 반응으로 푸시 알림을 보낼 수 있습니다.
예를 들어, 소셜 미디어 앱에서 친구의 게시물에 댓글이 달리면 알림을 받거나, 게임 앱에서 보상이 주어질 때 알림을
통해 사용자를 유치할 수 있습니다.
2. FCM 설치 및 설정
2.1 Firebase 프로젝트 생성
-
Firebase 콘솔(https://console.firebase.google.com/)에 로그인합니다.
-
새 프로젝트를 만들고, 프로젝트 이름을 입력한 후 ‘계속’을 클릭합니다.
-
Google Analytics를 원하면 활성화할 수 있고, 그렇지 않으면 비활성화하고 ‘생성’ 버튼을 클릭합니다.
-
프로젝트 대시보드에서 안드로이드 아이콘을 클릭하여 안드로이드 앱을 추가합니다.
-
패키지 이름, 앱 닉네임 등을 입력하고, ‘앱 등록’을 클릭합니다.
-
google-services.json 파일을 다운로드하여 앱의 ‘app’ 디렉토리에 추가합니다.
2.2 Gradle 설정
프로젝트의 build.gradle 파일에 Google 서비스 플러그인 및 Firebase 의존성을 추가합니다.
// Project level build.gradle
buildscript {
dependencies {
// Add this line
classpath 'com.google.gms:google-services:4.3.10'
}
}
// App level build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
dependencies {
// Add this line
implementation 'com.google.firebase:firebase-messaging-ktx:23.0.0'
}
3. 메시지 수신을 위한 서비스 생성
FCM에서 메시지를 수신하려면 FirebaseMessagingService를 확장한 서비스를 만들어야 합니다. 생성한 서비스는
FCM 서버로부터 메시지를 수신하여 적절히 처리합니다.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
// 메시지가 수신되면 호출됩니다.
remoteMessage.notification?.let {
showNotification(it.title, it.body)
}
}
private fun showNotification(title: String?, message: String?) {
// 알림 생성 및 표시하는 코드
val notificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val notificationBuilder = NotificationCompat.Builder(this, "YOUR_CHANNEL_ID")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_HIGH)
notificationManager.notify(0, notificationBuilder.build())
}
}
4. FCM 토큰 관리
클라이언트 앱은 FCM에서 메시지를 받을 수 있도록 고유한 토큰을 발급받습니다. 이 토큰은 서버에 등록하여
특정 클라이언트에 알림을 보낼 수 있도록 합니다. 토큰을 관리하고 업데이트 받기 위한 코드를 작성합니다.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
super.onNewToken(token)
// 새로운 토큰을 서버에 등록하는 로직
sendTokenToServer(token)
}
private fun sendTokenToServer(token: String) {
// 서버에 토큰을 전송하는 코드
}
}
5. FCM 메시지 발송
서버 측에서는 발급받은 FCM 토큰을 이용하여 메시지를 전송합니다. 스마트폰이 아닌 웹 서버에서
메시지를 생성하고 FCM 서버로 전송하는 방식입니다. 예를 들어, Node.js 서버에서 Express.js를 사용하여
메시지를 발송하는 코드를 작성할 수 있습니다.
const admin = require("firebase-admin");
admin.initializeApp();
function sendNotification(token, title, body) {
const message = {
notification: { title: title, body: body },
token: token
};
admin.messaging().send(message)
.then((response) => {
console.log("Successfully sent message:", response);
})
.catch((error) => {
console.log("Error sending message:", error);
});
}
6. 테스트 및 검증
이제 FCM 설정이 완료되었습니다. 앱을 실행하여 푸시 알림을 수신할 수 있는지 테스트합니다.
FCM 서버에서 토큰을 사용하여 메시지를 보내고, 클라이언트 앱에서 수신된 메시지가 정상적으로 표시되는지
확인합니다.
7. 결론
Firebase Cloud Messaging(FCM)을 통해 개발자는 다양한 방법으로 사용자에게 알림을 보낼 수 있습니다.
위에서 설명한 과정을 통해 FCM을 안드로이드 앱에 통합하는 방법을 배우셨습니다.
푸시 알림은 사용자 경험을 개선하고, 앱의 참여도를 높이는 데 큰 도움이 되므로 꼭 활용해 보세요.
8. 추가 자료
Firebase 공식 문서: https://firebase.google.com/docs/cloud-messaging
안드로이드 개발자 문서: https://developer.android.com/training/notify-user/group