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이 일부 로컬 변경사항을 추적하지 않는다는 알림이 표시될 수도 있습니다. 이 경우 오른쪽 상단에서 '무시' 또는 'X'를 클릭하면 됩니다. 변경사항이 Git 저장소로 다시 푸시되지 않습니다.
Android 뷰에 있으면 프로젝트 창의 왼쪽 상단에 아래와 같은 이미지가 표시됩니다. Project 뷰에서는 동일한 내용을 보려면 프로젝트를 펼쳐야 합니다.
Android 스튜디오에서 처음으로 프로젝트를 백그라운드에서 컴파일할 때는 몇 초 정도 걸릴 수 있습니다. 그동안 Android 스튜디오 하단의 상태 표시줄에 스피너가 표시됩니다.
이 작업이 끝날 때까지 기다린 다음에 코드를 변경하는 것이 좋습니다. 그러면 Android 스튜디오에서 필요한 모든 구성요소를 가져올 수 있습니다.
그 외에 'Reload for language changes to take effect?'라는 메시지나 이와 유사한 메시지가 표시되면 'Yes'를 선택합니다.
에뮬레이터 설정
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 Console로 이동하여 왼쪽 탐색 메뉴에서 프로젝트 개요 옆에 있는 톱니바퀴 아이콘을 클릭하고 프로젝트 설정을 선택합니다.
- 설정 페이지에서 서비스 계정을 선택하고 서비스 계정 만들기를 클릭합니다. <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
파일을 로드합니다.
- 이제 서버 코드가 준비되었습니다. 상단 메뉴 바에서 Build Run -> Build Project를 선택합니다.
테스트 메시지 보내기
FcmSender.java
에서sendMessageToFcmRegistrationToken
함수를 찾아 시작 앱 실행 섹션에서 복사한 FCM 등록 토큰을registrationToken
필드에 삽입합니다.main
함수에서sendMessageToFcmRegistrationToken
함수의 주석만 해제하고 실행을 클릭하여 코드를 실행합니다.- FCM 등록 토큰이
message
객체의Token
필드에 설정되는 방식을 확인합니다. - 또한
FirebaseMessaging
인터페이스의send
API를 어떻게 사용했는지 확인합니다.
- FCM 등록 토큰이
- 그러면 이전 단계에서 설정한 앱 인스턴스에 메시지가 전송됩니다.
- 앱 인스턴스가 포그라운드에 있으면 메시지 콘텐츠가 로깅됩니다.
- 앱 인스턴스가 백그라운드에 있으면 알림 트레이에 메시지가 표시됩니다.
Firebase Admin SDK를 사용하여 앱 인스턴스에 메시지를 전송했습니다. 서버에서 Firebase Admin SDK 사용에 대해 자세히 알아보세요.
6. 주제 구독 / 구독 취소 구현
이 단계에서는 Android 앱의 Stock Category 전환 버튼에서 주제 구독과 구독 취소 작업을 구현합니다.
앱 사용자가 특정 주식 카테고리의 스위치를 전환하면 주제 구독 또는 구독 취소 호출이 실행됩니다.
코드 검토
- 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를 사용하면 다음 연산자를 사용하여 조합을 불리언 표현식의 형태로 표현할 수 있습니다.
- && 논리곱(AND)입니다. 예:
'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
함수만 호출하도록 설정합니다.
메일 보내기 및 수신 확인
- 주제 메시지를 보내기 전에 먼저 앱 인스턴스를 Technology 및 Automotive 주제에 모두 구독하여 앱 인스턴스가 지정된 주제 조건을 충족하는지 확인합니다.
- 이제
FcmSender.java
의main
함수를 실행하여 주제 메시지를 보낼 수 있습니다. - 이전과 마찬가지로 앱 인스턴스에서 메시지 수신을 확인할 수 있습니다.
- 포그라운드의 앱 인스턴스
- 백그라운드의 앱 인스턴스
- 보너스: 이제 기술 주제의 구독을 취소하고 주제 조건 메시지를 다시 보낼 수 있습니다. 앱 인스턴스에서 메시지가 수신되지 않는 것을 확인해야 합니다.
9. 요약
지금까지 배운 내용을 간단히 복습해 보겠습니다.
- 앱 인스턴스에서 주제 구독 / 구독 취소를 시작하는 방법
- 주제에 메시지를 전송하고 구독한 앱 인스턴스에서 수신 확인
- 주제 조건에 메시지를 전송하고 조건을 충족하는 앱 인스턴스에서 수신 확인
다음 섹션에서는 클라이언트 측에서 호출을 인스턴스화하지 않고도 앱 인스턴스에서 주제를 구독 / 구독 취소하는 방법을 알아봅니다.
10. 서버 측에서 주제 구독 관리
지금까지 이 Codelab에서는 모든 주제 구독 및 구독 취소 호출이 앱 인스턴스에서 시작되었습니다.
하지만 일부 사용 사례에서는 서버 측에서 주제 구독을 관리하는 것이 좋습니다. 예를 들어 앱이 출시될 때까지 기다리지 않고 기존 사용자층의 하위 그룹에 새 주제를 구독할 수 있습니다.
이 섹션에서는 Firebase Admin SDK를 사용하여 서버 측에서 호출하여 주제에 대한 일괄 FCM 등록 토큰을 구독 및 구독 취소하는 방법을 알아봅니다.
FCM 주제에 대한 FCM 등록 토큰의 서버 측 구독 구현
- 서버 코드에서
FcmSubscriptionManager.java
클래스로 이동합니다.subscribeFcmRegistrationTokensToTopic
메서드를 찾습니다. 여기에서subscribeToTopic
API 호출을 구현합니다.
- 앱 인스턴스에서 에너지 주제를 구독해 보겠습니다. 이렇게 하려면 먼저 다음 두 필드에 데이터를 제공합니다.
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
를 사용하여 주제에 타겟팅합니다.- 마지막으로
main
메서드를 업데이트하여sendMessageToFcmTopic
함수만 사용 설정합니다.
FcmSender.java
의main
함수를 실행합니다. 그러면 메시지가 앱 인스턴스로 전송되고 다음과 같이 앱에서 확인할 수 있습니다.- 포그라운드 상태인 앱 인스턴스
- 백그라운드의 앱 인스턴스
FCM 주제에 FCM 등록 토큰의 서버 측 구독 취소 구현
- 서버 측 주제 구독 취소의 경우 이
unsubscribeFromTopic
API를 사용하세요.FcmSubscriptionManager.java
클래스의unsubscribeFcmRegistrationTokensFromTopic
함수에 관련 코드를 추가합니다.
- 서버 측 수신 거부 코드를 구현하고 주제 메시지를 전송하여 그 효과를 검증하는 것은 연습으로 남아 있습니다.
11. 축하합니다
수고하셨습니다. FCM 주제를 사용하여 앱 인스턴스의 하위 그룹에 멀티캐스트 메시지를 보냈습니다. 이를 통해 관련성 높은 콘텐츠로 사용자에게 시의적절하게 도달하는 기능을 간소화할 수 있습니다.
다음 단계
이제 Codelab을 완료했으므로 다음 가이드를 사용하여 다른 플랫폼에 관한 주제를 시도해 보세요.