1. 소개
목표
이 Codelab에서는 FCM 주제를 사용하여 앱 인스턴스의 다양한 하위 그룹에 푸시 메시지를 멀티캐스트할 수 있도록 멀티 플랫폼 앱을 계측하는 방법을 알아봅니다.
완료되면 FCM 인프라를 활용하여 이러한 하위 그룹을 관리하고 하위 그룹을 통한 멀티캐스트 푸시 메시지를 관리할 수 있습니다.
주제 개요
주제는 메시지로 앱 인스턴스의 하위 그룹에 도달하는 FCM 인프라 지원 방법입니다.
FCM은 메시지를 보내고 이러한 주제의 구독을 유지하는 API를 제공합니다. 앱 인스턴스를 주제에 연결하거나 연결 해제하는 작업을 각각 구독 및 구독 취소라고 합니다.
주제는 공개적으로 사용 가능한 콘텐츠에 사용되어야 합니다. 예를 들어 날씨 업데이트 관련 메시지가 있습니다. 사용자 민감한 메시지를 전송하려면 Firebase Admin SDK를 사용하여 여러 기기에서 메시지를 멀티캐스트하세요.
주제 기반 멀티캐스트는 처리량에 최적화되어 있습니다.
학습 내용
- 모바일 앱에서 주제에 대한 사용자 구독(및 구독 취소)을 처리하는 방법
- 주제를 사용하여 멀티캐스트 푸시 메시지를 전송하는 방법
- 주제 조건을 사용하여 여러 주제에 대해 메시지를 보내는 방법
- 서버 측에서 주제 구독을 관리하고 일괄 구독 및 구독 취소를 실행하는 방법
빌드할 항목
- 주제를 구독/구독 취소하며 주제로 전송될 때 메시지를 수신하는 Android 앱
- FCM API를 통해 주제 메시지를 전송하는 데 사용되는 Firebase Admin SDK를 사용한 서버 측 통합입니다.
필요한 사항
- 원하는 브라우저(예: Chrome)
- Java 애플리케이션을 개발하기 위한 IntelliJ IDEA IDE
- 설치 중에 Gradle 지원을 선택해야 합니다.
- Android 애플리케이션을 개발하기 위한 Android 스튜디오 IDE
- Android 애플리케이션을 실행하는 기기입니다. 다음 중 하나:
- Android Emulator (Android 스튜디오에서 설정 필요)
- 컴퓨터에 연결되어 있으며 개발자 모드로 설정된 실제 Android 기기
- Firebase 프로젝트를 만들고 관리하는 데 사용할 Google 계정입니다.
2. 설정
코드 가져오기
명령줄에서 GitHub 저장소를 클론합니다.
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
샘플 코드가 fcm-codelab
디렉터리에 클론됩니다.
cd fcm-codelab
이 Codelab의 시작 앱은 fcm-topics-codelab
브랜치의 messaging
디렉터리에 있습니다. 다음 단계에 따라 시작 코드에 도달합니다. 이 디렉터리에는 StockNewsApp
및 StockNewsServer
라는 두 개의 디렉터리가 포함되어 있습니다. 전자에는 시작 Android 앱이 포함되어 있고 후자는 시작 서버 측 코드를 포함합니다.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
이 Codelab의 완료된 버전은 messaging/fcm-topics-codelab/completed
디렉터리에 있습니다.
Firebase 프로젝트 만들기
- Firebase Console에서 프로젝트 추가를 클릭하고 Firebase 프로젝트의 이름을 StockNews로 지정한 후 '계속'을 클릭합니다. 참고: Firebase 프로젝트의 프로젝트 ID를 기억합니다(또는 수정 아이콘을 클릭하여 선호하는 프로젝트 ID 설정).
- Google 애널리틱스 사용 설정은 건너뛰어도 됩니다. 이 Codelab에서는 필요하지 않습니다. 계속을 클릭합니다.
- 프로젝트 만들기를 클릭합니다.
수고하셨습니다. Firebase 프로젝트가 생성되었습니다. 이제 프로젝트 이름을 클릭하여 콘솔에 들어갈 수 있습니다.
3. 플랫폼별 Firebase 앱 구성
Firebase 지원을 사용 설정하는 데 필요한 대부분의 코드 변경사항은 이미 작업 중인 프로젝트에 체크인되어 있습니다. 그러나 모바일 플랫폼을 위한 지원을 추가하려면 다음을 실행해야 합니다.
- Firebase 프로젝트에 원하는 플랫폼 등록
- 플랫폼별 구성 파일을 다운로드하여 코드에 추가합니다.
이 Codelab의 목적에 맞게 Android Firebase 앱을 추가하겠습니다.
Android 구성
- Firebase Console의 설정 톱니바퀴에 있는 왼쪽 탐색 메뉴 상단에서 프로젝트 설정을 선택하고 일반 페이지의 내 앱 아래에 있는 Android 아이콘을 클릭합니다.
다음 대화상자가 표시됩니다.
- 제공해야 할 중요한 값은 Android 패키지 이름입니다.
com.ticker.stocknews
로 설정합니다.- 여기에 제공된 패키지 이름은 시작 StockNewsApp 코드의
AndroidManifest.xml
에 제공된 이름과 같아야 합니다. 이 주소를 찾거나 변경하려면 다음 단계를 따르세요.- StockNewsApp 디렉터리에서
app/src/main/AndroidManifest.xml
파일을 엽니다. manifest
요소에서package
속성의 문자열 값을 찾습니다. 이 값이 Android 패키지 이름입니다.
- StockNewsApp 디렉터리에서
- 여기에 제공된 패키지 이름은 시작 StockNewsApp 코드의
- Firebase 대화상자에서 복사한 패키지 이름을 Android 패키지 이름 필드에 붙여넣습니다.
- 이 앱은 출시되지 않으므로 이 Codelab에서는 디버그 서명 인증서 SHA-1이 필요하지 않습니다. 이 입력란은 비워둡니다.
- 앱 등록을 클릭합니다.
- Firebase Console에서 계속 진행하여 안내에 따라
google-services.json
구성 파일을 다운로드합니다. - 시작 앱 코드에 다른 모든 것이 이미 구성되어 있으므로 나머지 설정 단계를 건너뛰어도 됩니다. Firebase Console의 기본 페이지에 앱이 표시됩니다.
- 방금 다운로드한
google-services.json
파일을messaging/fcm-topics-codelab/starter/StockNewsApp/app
디렉터리에 복사합니다.
4. 앱 빌드 및 실행
이제 앱에 관한 작업을 시작할 수 있습니다. 먼저 앱을 빌드하고 실행합니다.
시작 앱 가져오기
Android 스튜디오를 시작하고 시작 코드 디렉터리에서 messaging/fcm-topics-codelab/starter/StockNewsApp
를 가져옵니다.
프로젝트가 로드된 후 Git이 모든 로컬 변경사항을 추적하지 않는다는 알림이 표시될 수도 있습니다. 이 경우 'Ignore'를 클릭하면 됩니다. 또는 'X' 을 클릭합니다. 변경사항이 Git 저장소로 다시 푸시되지 않습니다.
Android 뷰에서는 프로젝트 창의 왼쪽 상단에 아래와 같은 이미지가 표시됩니다. Project 뷰에서는 동일한 내용을 보려면 프로젝트를 펼쳐야 합니다.
Android 스튜디오에서 처음으로 프로젝트를 백그라운드에서 컴파일할 때는 몇 초 정도 걸릴 수 있습니다. 그동안 Android 스튜디오 하단의 상태 표시줄에 스피너가 표시됩니다.
이 작업이 끝날 때까지 기다린 다음에 코드를 변경하는 것이 좋습니다. 그러면 Android 스튜디오에서 필요한 모든 구성요소를 가져올 수 있습니다.
또한 'Reload for language changes to take apply?'라는 메시지가 표시되면 '예'를 선택합니다.
에뮬레이터 설정
Android Emulator 설정에 도움이 필요하면 앱 실행 도움말을 참고하세요.
Android 앱 시작 코드 이해하기
- 시작 코드는 최소한의 기능과 UI를 갖춘 경량 Android 앱입니다.
- firebase-messaging SDK에 대한 종속 항목이 이미
app/build.gradle
파일에 추가되어 있습니다.
AndroidManifest.xml
에서MESSAGING_EVENT
콜백 핸들러가 이미 추가되어 있습니다.- 이 핸들러
StockNewsMessagingService.java
는 다양한 Firebase 클라우드 메시징 관련 기능을 제공하는FirebaseMessagingService
클래스를 확장합니다. 자세한 내용은 FirebaseMessagingService 문서를 참조하세요. <ph type="x-smartling-placeholder"></ph>
onNewToken
함수는 FCM 등록 토큰이 생성되거나 새로고침될 때 호출됩니다. 자세한 내용은 토큰 생성 모니터링을 참고하세요.onMessageReceived
함수는 메시지가 수신되고 앱이 포그라운드에 있을 때 호출됩니다. 현재는 수신된 메시지만 기록합니다.- 백그라운드 및 포그라운드 메시지 전송 및 처리의 차이에 관해 자세히 알아보려면 Android 앱에서 메시지 수신을 참고하세요.
- 이 핸들러
- 또한
AndroidManifest.xml
에서는StockNewsApplication
이라는 AndroidApplication
클래스도 제공됩니다.- 이 클래스는 앱이 시작될 때 가장 먼저 인스턴스화됩니다.
StockNewsApplication
클래스의onCreate
함수에 FCM 등록 토큰 생성 호출이 추가됩니다. 그러면 유효한 FCM 등록 토큰이 생성되고 로깅됩니다.
MainActivity.java
는 주식 카테고리 선택사항을 표시하는RecyclerView
를 추가합니다.SubscriptionAdapter.java
는 주식 카테고리 선택 화면을 그리는RecyclerView.Adapter
를 구현합니다.- 각 주식 카테고리에는 이름과 그 옆에 구독 전환 버튼이 있습니다.
- 전환 버튼을 변경하면 FCM 주제 구독 / 구독 취소가 호출됩니다.
- 이러한 호출은 다음 섹션에서 구현합니다.
model/StockCategories.java
클래스에는 모든 주식 카테고리와 관련 주제 이름의 목록이 포함됩니다.
시작 앱 실행
- Android 기기를 컴퓨터에 연결하거나 에뮬레이터를 시작합니다.
- 상단 툴바에서 대상 Android 기기나 에뮬레이터를 선택하고 실행 버튼을 누릅니다.
- 앱 UI는 다음과 같습니다.
- 앱에서 FCM 등록 토큰을 만들고 기록합니다. 하지만 앱 UI에는 변화가 없습니다.
- 다음 단계에서 사용될 FCM 등록 토큰을 복사하여 저장합니다.
5. 테스트 메시지 보내기
이제 마지막 단계에서 설정한 앱 인스턴스에 테스트 메시지를 보낼 수 있습니다.
시작 서버 코드 가져오기
IntelliJ IDEA를 시작하고 messaging/fcm-topics-codelab/starter/StockNewsServer
프로젝트를 엽니다.
왼쪽 탐색 메뉴에 프로젝트 뷰가 다음과 같이 표시됩니다.
참고로 IntellIj IDEA에서 필수 종속 항목 가져오기를 포함하여 프로젝트를 빌드하는 데 몇 분 정도 걸릴 수 있습니다.
서버 시작 코드 이해하기
- 서버 시작 코드는 Gradle 기반 Java 프로젝트입니다.
build.gradle
파일에는 이미 추가된 firebase-admin SDK 종속 항목이 있습니다. 이 SDK는 다양한 FCM 메시지 전송 기능에 액세스할 수 있도록 지원합니다.
- 마지막으로 두 가지 클래스가 있습니다.
FcmSender.java
: 이 클래스에는 다음 참고 메서드가 포함되어 있습니다.initFirebaseSDK
: firebase-admin SDK를 초기화합니다.sendMessageToFcmRegistrationToken
: FCM 등록 토큰에 메시지를 보냅니다.sendMessageToFcmTopic
: FCM 주제로 메시지를 보냅니다.sendMessageToFcmTopicCondition
: FCM 주제 조건으로 메시지를 보냅니다.
FcmSubscriptionManager.java
: 이 클래스에는 서버 측에서 주제 구독을 관리할 수 있는 메서드가 포함되어 있습니다.initFirebaseSDK
: firebase-admin SDK를 초기화합니다.subscribeFcmRegistrationTokensToTopic
: FCM 주제에 FCM 등록 토큰을 구독합니다.unsubscribeFcmRegistrationTokensFromTopic
: FCM 주제에서 FCM 등록 토큰을 구독 취소합니다.
서버 코드 설정
- 먼저 firebase-admin SDK가 FCM API 호출을 승인할 수 있도록 Firebase 서비스 계정을 설정해야 합니다.
- Firebase 콘솔로 이동하여 왼쪽 탐색 메뉴의 프로젝트 개요 옆에 있는 톱니바퀴 아이콘을 클릭하고 프로젝트 설정을 선택합니다. <ph type="x-smartling-placeholder"></ph>
- 설정 페이지에서 서비스 계정을 선택하고 서비스 계정 만들기를 클릭합니다. <ph type="x-smartling-placeholder"></ph>
- 이제 새 비공개 키 생성 버튼을 클릭하면 키 파일이 자동으로 다운로드됩니다.
- 키 파일의 이름을
service-account.json
로 바꾸고messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
폴더에 복사합니다. FcmSender.java
와FcmSubscriptionManager.java
모두 다음 코드를 사용하여 클래스 경로에서service-account.json
파일을 로드합니다.
- 이제 서버 코드가 준비되었습니다. 빌드 실행 -> 프로젝트 빌드를 선택합니다.
테스트 메시지 보내기
FcmSender.java
에서sendMessageToFcmRegistrationToken
함수를 찾아 시작 앱 실행 섹션에서 복사한 FCM 등록 토큰을registrationToken
필드에 삽입합니다.main
함수에서sendMessageToFcmRegistrationToken
함수의 주석만 해제하고 실행을 클릭하여 코드를 실행합니다.- FCM 등록 토큰이
message
객체의Token
필드에 어떻게 설정되어 있는지 확인합니다. - 또한
FirebaseMessaging
인터페이스의send
API를 어떻게 사용했는지 확인합니다.
- FCM 등록 토큰이
- 그러면 이전 단계에서 설정한 앱 인스턴스에 메시지가 전송됩니다.
- 앱 인스턴스가 포그라운드 상태이면 메시지 콘텐츠가 로깅됩니다.
- 앱 인스턴스가 백그라운드에 있으면 알림 트레이에 메시지가 표시됩니다.
축하합니다. Firebase Admin SDK를 사용하여 앱 인스턴스에 메시지를 보냈습니다. 서버에서 Firebase Admin SDK 사용에 대해 자세히 알아보세요.
6. 주제 구독/구독 취소 구현
이 단계에서는 Android 앱의 주식 카테고리 전환 버튼에서 주제 구독 및 구독 취소 작업을 구현합니다.
앱 사용자가 특정 주식 카테고리에 대한 스위치를 전환하면 주제 구독 또는 구독 취소가 호출됩니다.
코드 검토
- Android 앱 코드에서
SubscriptionAdapter.java
클래스로 이동하여RecyclerViewViewHolder
클래스를 찾습니다.
- 클래스 생성자는
setOnCheckedChangeListener
를 사용하여 구독 전환의 리스너를 설정합니다. - 스위치 전환에 따라 구독 및 구독 취소 작업은 각각
subscribeToStockCategory
및unsubscribeFromStockCategory
메서드를 호출하여 실행됩니다. setData
메서드는 RecyclerView 어댑터의onBindViewHolder
에서 호출되어 ViewHolder를 적절한 스톡 카테고리와 결합합니다.
주제 구독 구현
subscribeToStockCategory
메서드에서FirebaseMessaging
객체의subscribeToTopic
API 호출을 구현합니다. 코드는 다음과 같이 표시될 수 있습니다.
void subscribeToStockCategory() { // Making call to FCM for subscribing to the topic for stockCategory FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener( unused -> { // Subscribing action successful Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName()); Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(), Toast.LENGTH_SHORT).show(); }); }
주제 수신 거부 구현
- 마찬가지로 else 조건에서
unsubscribeFromTopic
API 호출을 구현합니다. 다음과 같은 내용을 작성합니다.
void unsubscribeFromStockCategory() { // Making call to FCM for unsubscribing from the topic for stockCategory FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName()) .addOnSuccessListener(unused -> { // Unsubscribing action successful Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName()); Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(), Toast.LENGTH_SHORT).show(); }); }
사용해 보기
- 앱을 실행하고 주식 카테고리 옵션을 전환하여 구독 및 구독 취소 작업을 실행합니다. URL에 태그를 추가하는 방법은 다음과 같습니다.
구독 | 구독 취소 |
7. 첫 번째 주제 메시지 전송 중
이 단계에서는 FCM 주제 메시지를 전송하는 서버 측 코드를 구현합니다.
주제 메시지 전송을 위한 서버 측 통합 구현
- 서버 코드에서
FcmSender.java
로 이동하여sendMessageToFcmTopic
메서드를 찾습니다.
- 첫 번째 줄에 메시지를 전송할 FCM 주제를 입력합니다.
/topics/<Topic Name>
형식의 문자열입니다. 예를 들면/topics/Technology
입니다.
- 다음 줄에서 새
message
객체를 만듭니다 (sendMessageToFcmRegistrationToken
함수에 정의된 객체와 유사).- 차이점은
message
객체의Token
필드를 설정하는 대신Topic
필드를 설정한다는 점입니다.
- 차이점은
Message message = Message.builder() .putData("FOOTECH", "$1000") .setNotification( Notification.builder() .setTitle("Investor confidence in Tech Stocks growing") .setBody("Foo Tech leading the way in stock growth for Tech sector.") .build()) .setTopic(topicName) .build();
- 이제
FirebaseMessaging
인스턴스 호출을 추가하여 메시지를 전송합니다(sendMessageToFcmRegistrationToken
함수에서 실행된 전송 호출과 동일).
FirebaseMessaging.getInstance().send(message);
- 마지막으로
main
함수를 업데이트하고sendMessageToFcmTopic
함수만 호출하도록 설정합니다.
메시지 보내기 및 수신 확인
- 주제 메시지를 보내기 전에 먼저 앱 인스턴스가 전송하려는 주제를 구독하고 있는지 확인합니다.
- 이는 해당 전환 버튼을 전환하면 됩니다. 예를 들면 다음과 같습니다.
- 이제
FcmSender.java
의main
함수를 실행하여 주제 메시지를 보낼 수 있습니다. - 앱 인스턴스에서 메시지 수신을 관찰할 수 있어야 합니다.
- 포그라운드 상태인 앱 인스턴스
- 백그라운드의 앱 인스턴스
- 보너스: 수신한 주제를 구독 취소한 다음 메시지를 다시 보내세요. 메시지가 앱 인스턴스에 전송되지 않는 것을 확인할 수 있습니다.
8. 첫 번째 주제 조건 메시지 전송
주제 조건 기능을 사용하면 여러 주제의 조합으로 메시지를 보낼 수 있으므로 잠재고객을 보다 표현력 있게 정의할 수 있습니다.
예를 들어 StockNews 앱에서 기술 또는 자동차 주제를 구독하는 앱 인스턴스 그룹에 메시지를 보낼 수 있습니다. 예를 들어 Waymo와 관련된 주목할 만한 사건이 발생한 경우 이러한 경우가 발생할 수 있습니다.
Topics를 사용하면 다음 연산자를 사용하여 조합을 불리언 표현식 형식으로 표현할 수 있습니다.
- && : 논리곱 예:
'Technology' in topics && 'Automotive' in topics
: 기술 및 자동차 주제를 모두 구독하는 앱 인스턴스만 타겟팅합니다. - || : 논리 OR. 예를 들어
'Technology' in topics || 'Automotive' in topics
- 기술 또는 자동차 주제를 구독하는 앱 인스턴스를 타겟팅합니다. - () : 그룹화를 위한 괄호. 예를 들어
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)
: 기술 및 Automotive 또는 Energy 주제를 구독하는 앱 인스턴스만 타겟팅합니다.
이 기능을 사용하기 위해 전송 요청을 빌드하는 방법을 자세히 알아보세요.
주제 조건 메시지 전송을 위한 서버 측 통합 구현
- 서버 코드로 돌아가
FcmSender.java
로 이동하여sendMessageToFcmTopicCondition
라는 메서드를 찾습니다.
- 첫 번째 줄의
topicCondition
변수에 메시지를 전송할 주제 조건을 제공합니다.'Technology' in topics && 'Automotive' in topics
로 설정할 수 있습니다. - 다음 줄에서 새
message
객체를 만듭니다 (sendMessageToFcmTopic
함수에 정의된 객체와 유사).- 차이점은 객체의
Topic
필드를 설정하는 대신Condition
필드를 설정한다는 점입니다.
- 차이점은 객체의
Message message = Message.builder() .putData("FOOCAR", "$500") .setNotification( Notification.builder() .setTitle("Foo Car shows strong Q2 results") .setBody("Foo Car crosses 1B miles. Stocks rally.") .build()) .setCondition(topicCondition) .build();
- 이제
FirebaseMessaging
인스턴스 호출을 추가하여 메시지를 전송합니다(sendMessageToFcmTopic
함수에서 실행된 전송 호출과 동일).
FirebaseMessaging.getInstance().send(message);
- 마지막으로
main
함수를 업데이트하고sendMessageToFcmTopicCondition
함수만 호출하도록 설정합니다.
메시지 전송 및 수신 확인
- 주제 메시지를 보내기 전에 먼저 앱 인스턴스에서 기술 및 자동차 주제를 모두 구독하여 앱 인스턴스가 지정된 주제 조건을 충족하는지 확인합니다.
- 이제
FcmSender.java
의main
함수를 실행하여 주제 메시지를 보낼 수 있습니다. - 이전과 마찬가지로 앱 인스턴스에서 메시지 수신을 확인할 수 있습니다.
- 포그라운드의 앱 인스턴스
- 백그라운드의 앱 인스턴스
- 보너스: 이제 기술 주제를 구독 취소하고 주제 조건 메시지를 다시 보낼 수 있습니다. 앱 인스턴스에서 메시지를 수신하지 않는 것을 확인할 수 있습니다.
9. 요약
지금까지 배운 내용을 간단하게 복습해 보겠습니다.
- 앱 인스턴스에서 주제 구독/구독 취소를 시작하는 방법
- 주제에 메시지를 전송하고 구독한 앱 인스턴스에서 수신 확인
- 주제 조건에 메시지를 전송하고 조건을 충족하는 앱 인스턴스에서 수신 확인
다음 섹션에서는 클라이언트 측에서 호출을 인스턴스화할 필요 없이 앱 인스턴스를 주제에 구독/구독 취소하는 방법을 알아봅니다.
10. 서버 측에서 주제 구독 관리
지금까지 이 Codelab에서는 모든 주제 구독 및 구독 취소 호출이 앱 인스턴스에서 시작되었습니다.
하지만 일부 사용 사례에서는 서버 측에서 주제 구독을 관리하는 것이 좋습니다. 예를 들어 앱이 출시될 때까지 기다리지 않고 기존 사용자층의 하위 그룹에 새 주제를 구독할 수 있습니다.
이 섹션에서는 Firebase Admin SDK를 사용하여 서버 측에서 호출하여 주제에 대한 일괄 FCM 등록 토큰을 구독 및 구독 취소하는 방법을 알아봅니다.
FCM 주제에 FCM 등록 토큰의 서버 측 구독 구현
- 서버 코드에서
FcmSubscriptionManager.java
클래스로 이동합니다.subscribeFcmRegistrationTokensToTopic
라는 메서드를 찾습니다. 여기에서subscribeToTopic
API 호출을 구현합니다.
- 앱 인스턴스를 Energy 주제에 구독해 보겠습니다. 이렇게 하려면 먼저 다음 두 필드에 데이터를 제공하세요.
registrationTokens
: 주제 구독을 만들려는 FCM 등록 토큰을 나타내는 쉼표로 구분된 문자열 목록입니다.topicName
: 에너지 주제의 주제 이름입니다(예:/topics/Energy
).
- 다음 몇 줄에서 다음 줄과 함께 호출을 구현합니다.
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
TopicManagementResponse
에서 일부 대략적인 결과 통계를 확인할 수 있습니다. 예를 들어getSuccessCount
를 사용하여 성공적으로 생성된 주제 구독 수를 출력합니다.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- 마지막으로
main
함수에서subscribeFcmRegistrationTokensToTopic
함수 호출만 사용 설정합니다.
정기 결제 만들기 및 주제 메시지 보내기
- 이제 주제 구독을 만들고 메시지를 보낼 수 있습니다.
FcmSubscriptionManager.java
클래스의main
함수를 실행합니다. 이렇게 하면 주제 구독이 생성됩니다.- 이제 메시지를 보낼 코드를 설정합니다. 이전과 마찬가지로
FcmSender.java
에서sendMessageToFcmTopic
함수를 찾습니다.topicName
을 에너지 주제로 설정합니다./topics/Energy
Message
객체를 만들고setTopic
를 사용하여 주제에 타겟팅합니다.- 마지막으로
sendMessageToFcmTopic
함수만 사용 설정하도록main
메서드를 업데이트합니다.
FcmSender.java
의main
함수를 실행합니다. 이렇게 하면 메시지가 앱 인스턴스로 전송되며 다음과 같이 앱에서 이를 관찰할 수 있습니다.- 포그라운드의 앱 인스턴스
- 백그라운드의 앱 인스턴스
FCM 주제에 대한 FCM 등록 토큰의 서버 측 구독 취소 구현
- 서버 측 주제 구독 취소의 경우 이
unsubscribeFromTopic
API를 사용합니다.FcmSubscriptionManager.java
클래스의unsubscribeFcmRegistrationTokensFromTopic
함수에 관련 코드를 추가합니다.
- 서버 측 구독 취소 코드를 구현하고 주제 메시지를 전송하여 그 효과를 검증하는 것은 연습으로 남겨 둡니다.
11. 축하합니다
수고하셨습니다. FCM 주제를 사용하여 앱 인스턴스의 하위 그룹에 멀티캐스트 메시지를 보냈습니다. 이를 통해 관련성 높은 콘텐츠로 사용자에게 시의적절하게 도달하는 기능을 간소화할 수 있습니다.
다음 단계
Codelab을 완료했으므로 다음 가이드를 사용하여 다른 플랫폼에 관한 주제를 시도해 보세요.