FCM (Firebase Cloud Messaging)
- Firebase Cloud Messaging (FCM)은 구글이 제공하는 크로스 플랫폼 메시징 솔루션
- 개발자들이 Android, iOS, 웹 애플리케이션을 대상으로 푸시 알림을 손쉽게 전송할 수 있도록 돕는다.
- FCM은 애플리케이션 간의 메시지 전송을 관리하고, 개발자들이 다양한 사용자 타겟팅 전략을 사용할 수 있게 하는 도구
1. FCM의 주요 개념
등록 토큰 (Registration Token)
- FCM을 사용하려면 각 기기에 고유한 등록 토큰이 필요하다. 이 토큰은 특정 기기로 푸시 메시지를 보내는 데 사용된다.
- 토큰은 앱 설치 시 생성되며, 앱이 FCM 서버와 처음 통신할 때 발급된다.
- 이 토큰은 기기, 사용자 또는 앱 인스턴스에 할당되며, 필요에 따라 새로 갱신될 수 있다.
토픽 (Topic)
- 개발자는 특정 주제(토픽)에 사용자들을 구독시킬 수 있다. 예를 들어, `news`라는 주제에 구독된 모든 사용자에게 뉴스 업데이트 푸시 알림을 보낼 수 있다.
- 주제 기반 메시징은 매우 유연하고, 특정 주제에 맞는 사용자 그룹을 형성하여 타겟팅할 수 있는 방법
알림 메시지 (Notification Message)
- FCM을 통해 전송되는 기본적인 푸시 알림 형식
- 사용자가 볼 수 있는 메시지로, 시스템 트레이에 표시되거나 앱 실행 시 특정 액션을 유도할 수 있다.
- 알림 메시지는 제목, 본문, 아이콘, 사운드 등의 속성을 포함할 수 있다.
데이터 메시지 (Data Message)
- 알림 메시지와 달리, 데이터 메시지는 앱이 백그라운드에서 처리하는데 사용된다.
- 데이터 메시지는 클라이언트 앱에 사용자 정의 키-값 쌍(key-value pair)을 전송하며, 앱에서 메시지를 어떻게 처리할지 완전한 제어권을 가진다.
조건부 메시징 (Conditional Messaging)
- FCM은 조건부 타겟팅을 지원하여 특정 조건을 만족하는 사용자에게만 메시지를 보낼 수 있다. 예를 들어, 특정 토픽을 구독하고 Android OS 10을 사용하는 사용자에게만 메시지를 보내는 조건을 설정할 수 있다.
메시지 우선순위
- FCM 메시지는 우선순위를 설정할 수 있다.
- `high` 우선순위 메시지는 즉시 전송되며, `normal` 우선순위 메시지는 저전력 모드일 때 배터리 소모를 줄이기 위해 일정 시간 지연될 수 있다.
2. FCM의 동작 원리

1. 앱 초기화 및 토큰 생성
- 사용자가 앱을 처음 설치하고 실행할 때, 앱은 FCM SDK를 통해 등록 요청을 보낸다.
- FCM 서버는 이 요청을 받아들이고, 해당 앱 인스턴스에 고유한 등록 토큰을 생성하여 반환한다.
- 이 토큰은 클라이언트 앱에서 저장되며, 서버로 전송되어 특정 사용자를 타겟팅한 푸시 알림을 보내는 데 사용된다.
2. 메시지 전송
- 개발자는 FCM 서버나 Firebase 콘솔에서 메시지를 전송할 수 있다.
- 서버에서 메시지를 생성하고, 특정 조건에 맞는 기기나 주제에 구독된 기기들에 전송 요청을 한다.
- FCM 서버는 이 요청을 받아 메시지를 적절한 기기에 전달한다.
- 이 과정에서 메시지 우선순위, 네트워크 상태 등을 고려하여 전송한다.
3. 메시지 수신 및 처리
- 클라이언트 앱은 수신된 메시지를 처리할 수 있는 리스너를 등록한다.
- 알림 메시지는 시스템 트레이에 표시되며, 데이터 메시지는 앱의 백그라운드에서 처리될 수 있다.
- 수신된 데이터는 앱의 상태나 사용자 인터랙션에 따라 다르게 처리될 수 있다.
3. FCM 사용 예시
- 간단한 알림 전송(python)
import requests
import json
# FCM 서버 키와 타겟 기기의 등록 토큰
server_key = 'YOUR_SERVER_KEY'
registration_token = 'TARGET_REGISTRATION_TOKEN'
# 메시지 데이터 구성
headers = {
'Content-Type': 'application/json',
'Authorization': 'key=' + server_key,
}
payload = {
'to': registration_token,
'notification': {
'title': 'Hello!',
'body': 'This is a test message from FCM.',
'icon': 'myicon',
'sound': 'default'
}
}
# FCM에 메시지 요청 전송
response = requests.post('https://fcm.googleapis.com/fcm/send', headers=headers, data=json.dumps(payload))
print(response.status_code)
print(response.json())
위 코드는 파이썬을 이용해 간단히 FCM을 통해 특정 기기에 알림 메시지를 전송하는 예시이다.
FCM 서버 키와 등록 토큰을 설정하고, HTTP 요청을 보내어 메시지를 전달한다.
- 토픽 기반 메시징(python)
payload = {
'to': '/topics/news',
'notification': {
'title': 'Breaking News',
'body': 'There is an important update you should read!',
}
}
이 예시는 `news` 토픽에 구독된 모든 사용자에게 알림 메시지를 전송한다. 토픽을 사용하면 비슷한 관심사를 가진 사용자에게 일괄 메시지를 보낼 수 있다.
4. FCM의 장점
- 다양한 플랫폼 지원: FCM은 Android, iOS, 웹 애플리케이션을 모두 지원하여, 한 번의 구현으로 여러 플랫폼에 푸시 알림을 전송할 수 있다.
- 유연한 메시징: 토픽, 조건부 타겟팅, 사용자 세그먼트 등을 통해 다양한 방법으로 메시지를 전송할 수 있다.
- 비용 효율적: FCM은 Google Firebase의 무료 서비스로 제공되며, 추가 비용 없이 다양한 기능을 활용할 수 있다.
- 손쉬운 통합: Firebase SDK를 이용하여 쉽게 애플리케이션에 통합할 수 있으며, Firebase 콘솔을 통해 메시지 전송을 직관적으로 관리할 수 있다.
- 고급 기능: 예약 메시지 전송, 사용자 행동 기반 트리거 등 고급 기능을 제공하여 더욱 정교한 마케팅 전략을 구현할 수 있다.
5. FCM 사용 시 고려사항
- 네트워크 상태: FCM은 인터넷 연결이 필요하며, 네트워크 상태가 좋지 않으면 메시지 전송이 지연될 수 있다.
- 기기 토큰 관리: 등록 토큰이 주기적으로 갱신될 수 있으므로, 서버에서 기기 토큰을 관리하고 갱신된 토큰을 처리할 수 있는 로직을 구현해야 한다.
- 푸시 알림의 효과: 푸시 알림이 너무 빈번하게 전송되면 사용자가 알림을 차단하거나 앱을 삭제할 수 있으므로, 사용자가 기대할 만한 가치 있는 메시지를 보내는 것이 중요하다.
- 보안 문제: 민감한 데이터는 푸시 알림으로 전송하지 않으며, FCM 메시지를 사용할 때는 HTTPS를 통해 데이터를 암호화하여 전송해야 한다.
결론적으로, FCM은 다양한 플랫폼에서 푸시 알림을 관리하고 전송할 수 있는 도구로, 사용자 경험을 개선하고, 마케팅 활동을 강화하는 데 중요한 역할을 한다.
그러나 이와 동시에 푸시 알림의 효과와 사용자 피로도를 고려하여 전략적으로 사용하는 것이 중요하다.
'CS' 카테고리의 다른 글
레드마인과 지라의 비교 (0) | 2024.08.28 |
---|---|
APNs(Apple Push Notification Service) (0) | 2024.08.20 |
OpenID Connect (OIDC) (0) | 2024.08.06 |
PCI DSS (0) | 2024.07.31 |
데이터 모델링(Data Modeling) (3) | 2024.07.25 |
FCM (Firebase Cloud Messaging)
- Firebase Cloud Messaging (FCM)은 구글이 제공하는 크로스 플랫폼 메시징 솔루션
- 개발자들이 Android, iOS, 웹 애플리케이션을 대상으로 푸시 알림을 손쉽게 전송할 수 있도록 돕는다.
- FCM은 애플리케이션 간의 메시지 전송을 관리하고, 개발자들이 다양한 사용자 타겟팅 전략을 사용할 수 있게 하는 도구
1. FCM의 주요 개념
등록 토큰 (Registration Token)
- FCM을 사용하려면 각 기기에 고유한 등록 토큰이 필요하다. 이 토큰은 특정 기기로 푸시 메시지를 보내는 데 사용된다.
- 토큰은 앱 설치 시 생성되며, 앱이 FCM 서버와 처음 통신할 때 발급된다.
- 이 토큰은 기기, 사용자 또는 앱 인스턴스에 할당되며, 필요에 따라 새로 갱신될 수 있다.
토픽 (Topic)
- 개발자는 특정 주제(토픽)에 사용자들을 구독시킬 수 있다. 예를 들어, `news`라는 주제에 구독된 모든 사용자에게 뉴스 업데이트 푸시 알림을 보낼 수 있다.
- 주제 기반 메시징은 매우 유연하고, 특정 주제에 맞는 사용자 그룹을 형성하여 타겟팅할 수 있는 방법
알림 메시지 (Notification Message)
- FCM을 통해 전송되는 기본적인 푸시 알림 형식
- 사용자가 볼 수 있는 메시지로, 시스템 트레이에 표시되거나 앱 실행 시 특정 액션을 유도할 수 있다.
- 알림 메시지는 제목, 본문, 아이콘, 사운드 등의 속성을 포함할 수 있다.
데이터 메시지 (Data Message)
- 알림 메시지와 달리, 데이터 메시지는 앱이 백그라운드에서 처리하는데 사용된다.
- 데이터 메시지는 클라이언트 앱에 사용자 정의 키-값 쌍(key-value pair)을 전송하며, 앱에서 메시지를 어떻게 처리할지 완전한 제어권을 가진다.
조건부 메시징 (Conditional Messaging)
- FCM은 조건부 타겟팅을 지원하여 특정 조건을 만족하는 사용자에게만 메시지를 보낼 수 있다. 예를 들어, 특정 토픽을 구독하고 Android OS 10을 사용하는 사용자에게만 메시지를 보내는 조건을 설정할 수 있다.
메시지 우선순위
- FCM 메시지는 우선순위를 설정할 수 있다.
- `high` 우선순위 메시지는 즉시 전송되며, `normal` 우선순위 메시지는 저전력 모드일 때 배터리 소모를 줄이기 위해 일정 시간 지연될 수 있다.
2. FCM의 동작 원리

1. 앱 초기화 및 토큰 생성
- 사용자가 앱을 처음 설치하고 실행할 때, 앱은 FCM SDK를 통해 등록 요청을 보낸다.
- FCM 서버는 이 요청을 받아들이고, 해당 앱 인스턴스에 고유한 등록 토큰을 생성하여 반환한다.
- 이 토큰은 클라이언트 앱에서 저장되며, 서버로 전송되어 특정 사용자를 타겟팅한 푸시 알림을 보내는 데 사용된다.
2. 메시지 전송
- 개발자는 FCM 서버나 Firebase 콘솔에서 메시지를 전송할 수 있다.
- 서버에서 메시지를 생성하고, 특정 조건에 맞는 기기나 주제에 구독된 기기들에 전송 요청을 한다.
- FCM 서버는 이 요청을 받아 메시지를 적절한 기기에 전달한다.
- 이 과정에서 메시지 우선순위, 네트워크 상태 등을 고려하여 전송한다.
3. 메시지 수신 및 처리
- 클라이언트 앱은 수신된 메시지를 처리할 수 있는 리스너를 등록한다.
- 알림 메시지는 시스템 트레이에 표시되며, 데이터 메시지는 앱의 백그라운드에서 처리될 수 있다.
- 수신된 데이터는 앱의 상태나 사용자 인터랙션에 따라 다르게 처리될 수 있다.
3. FCM 사용 예시
- 간단한 알림 전송(python)
import requests
import json
# FCM 서버 키와 타겟 기기의 등록 토큰
server_key = 'YOUR_SERVER_KEY'
registration_token = 'TARGET_REGISTRATION_TOKEN'
# 메시지 데이터 구성
headers = {
'Content-Type': 'application/json',
'Authorization': 'key=' + server_key,
}
payload = {
'to': registration_token,
'notification': {
'title': 'Hello!',
'body': 'This is a test message from FCM.',
'icon': 'myicon',
'sound': 'default'
}
}
# FCM에 메시지 요청 전송
response = requests.post('https://fcm.googleapis.com/fcm/send', headers=headers, data=json.dumps(payload))
print(response.status_code)
print(response.json())
위 코드는 파이썬을 이용해 간단히 FCM을 통해 특정 기기에 알림 메시지를 전송하는 예시이다.
FCM 서버 키와 등록 토큰을 설정하고, HTTP 요청을 보내어 메시지를 전달한다.
- 토픽 기반 메시징(python)
payload = {
'to': '/topics/news',
'notification': {
'title': 'Breaking News',
'body': 'There is an important update you should read!',
}
}
이 예시는 `news` 토픽에 구독된 모든 사용자에게 알림 메시지를 전송한다. 토픽을 사용하면 비슷한 관심사를 가진 사용자에게 일괄 메시지를 보낼 수 있다.
4. FCM의 장점
- 다양한 플랫폼 지원: FCM은 Android, iOS, 웹 애플리케이션을 모두 지원하여, 한 번의 구현으로 여러 플랫폼에 푸시 알림을 전송할 수 있다.
- 유연한 메시징: 토픽, 조건부 타겟팅, 사용자 세그먼트 등을 통해 다양한 방법으로 메시지를 전송할 수 있다.
- 비용 효율적: FCM은 Google Firebase의 무료 서비스로 제공되며, 추가 비용 없이 다양한 기능을 활용할 수 있다.
- 손쉬운 통합: Firebase SDK를 이용하여 쉽게 애플리케이션에 통합할 수 있으며, Firebase 콘솔을 통해 메시지 전송을 직관적으로 관리할 수 있다.
- 고급 기능: 예약 메시지 전송, 사용자 행동 기반 트리거 등 고급 기능을 제공하여 더욱 정교한 마케팅 전략을 구현할 수 있다.
5. FCM 사용 시 고려사항
- 네트워크 상태: FCM은 인터넷 연결이 필요하며, 네트워크 상태가 좋지 않으면 메시지 전송이 지연될 수 있다.
- 기기 토큰 관리: 등록 토큰이 주기적으로 갱신될 수 있으므로, 서버에서 기기 토큰을 관리하고 갱신된 토큰을 처리할 수 있는 로직을 구현해야 한다.
- 푸시 알림의 효과: 푸시 알림이 너무 빈번하게 전송되면 사용자가 알림을 차단하거나 앱을 삭제할 수 있으므로, 사용자가 기대할 만한 가치 있는 메시지를 보내는 것이 중요하다.
- 보안 문제: 민감한 데이터는 푸시 알림으로 전송하지 않으며, FCM 메시지를 사용할 때는 HTTPS를 통해 데이터를 암호화하여 전송해야 한다.
결론적으로, FCM은 다양한 플랫폼에서 푸시 알림을 관리하고 전송할 수 있는 도구로, 사용자 경험을 개선하고, 마케팅 활동을 강화하는 데 중요한 역할을 한다.
그러나 이와 동시에 푸시 알림의 효과와 사용자 피로도를 고려하여 전략적으로 사용하는 것이 중요하다.
'CS' 카테고리의 다른 글
레드마인과 지라의 비교 (0) | 2024.08.28 |
---|---|
APNs(Apple Push Notification Service) (0) | 2024.08.20 |
OpenID Connect (OIDC) (0) | 2024.08.06 |
PCI DSS (0) | 2024.07.31 |
데이터 모델링(Data Modeling) (3) | 2024.07.25 |