Android 응용 프로그램에 Firebase Cloud Messaging 설치(2) - 응용 프로그램에서 메시지 수신
이 항목은 실제 통지를 받는 데 필요한 코드를 써서 통지를 받을 때까지 정리했다.
FCM 메시지 유형
FCM 메시지의 종류는 다음과 같습니다.자세한 내용은 을 참조하십시오여기.
메시지 유형
개요
알림 메시지
어플리케이션 처리를 대신하는 FCM 메시지미리 정의된 키로 보내기 때문에 결정 이외의 정보를 보낼 수 없습니다
데이터 메시지
응용 프로그램이 직접 처리하는 메시지입니다.보내는 쪽은 메시지 형식을 자유롭게 결정할 수 있습니다. 예를 들어 메시지의 키
양자의 차이는 주로 다음과 같은 두 가지가 있다.
"onMessageReceived"라고 적힌 상태에서 호출Firebase Messaging Service 클래스의 서비스를 계승하는 onMessageReceived 방법.
메시지 유형
응용 프로그램은 프론트입니다.
응용 프로그램은 백그라운드입니다.
알림 메시지
작업 트레이 진입
onMessageReceived
데이터 메시지
onMessageReceived
onMessageReceived
알림 메시지에는 데이터도 포함될 수 있습니다.양자 병용의 경우 참조여기.
전제 조건
Android 프로젝트에 Firebase를 추가했습니다.추가 방법은 확인 이전 항목 하십시오.
환경
다음 환경을 사용하여 구현합니다.
다음 환경을 사용하여 구현합니다.
실시
서비스 정의
계승 FirebaseMessagingService 의 서비스를 만듭니다.
이 서비스는 다음과 같은 두 가지 방법을 구현합니다.
방법
호출 시간
onNewToken
토큰(터미널 + 어플리케이션 조합을 고유하게 식별하는 문자열)이 업데이트되었습니다.
onMessageReceived
통지를 받다
나는 각자의 방법을 실현해 보았다.원래 영패가 업데이트되면 서버에 저장해서 처리해야 하는데, 여기에는 기록만 하면 된다.
MyFirebaseMessagingService.javapublic class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
// 端末+アプリを一意に識別するためのトークンを取得
Log.i("FIREBASE", "[SERVICE] Token = " + token);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage != null) {
// 通知メッセージ
RemoteMessage.Notification notification = remoteMessage.getNotification();
if (notification != null) {
// 通知メッセージを処理
}
// データメッセージ
Map<String, String> data = remoteMessage.getData();
if (data != null) {
// データメッセージを処理
}
}
}
}
MyFirebaseMessagingService.ktclass MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String?) {
// 端末+アプリを一意に識別するためのトークンを取得
Log.i("FIREBASE", "[SERVICE] Token = ${token ?: "Empty"}")
}
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
remoteMessage?.let { message ->
// 通知メッセージ
message.notification?.let {
// 通知メッセージを処理
}
// データメッセージ
message.data?.let {
// データメッセージを処理
}
}
}
}
제작된 서비스는 Android Manifest입니다.등록xml.
AndroidManifest.xml<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
최신 태그 보기
터미널 등록 토큰(이하 토큰)은 터미널 + 애플리케이션 조합을 고유하게 식별하는 데 사용되는 문자열입니다.이것을 이용하여 응용 프로그램에 메시지를 보냅니다.
영패는 사용자의 상황과 서버 측의 상황에 따라 업데이트할 수 있다.최신 영패를 자주 얻는 것을 추천하기 때문에 응용 프로그램이 시작될 때 확인하는 것이 적합하다.
영패를 가져오는 코드는 다음과 같습니다.
태그 가져오기(Java)FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener((task) -> {
if (!task.isSuccessful()) {
Log.w("FIREBASE", "getInstanceId failed.", task.getException());
return;
}
String token = (task.getResult() == null) ? "empty" : task.getResult().getToken();
Log.i("FIREBASE", "[CALLBACK] Token = " + token);
});
태그 가져오기FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FIREBASE", "getInstanceId failed", task.exception)
return@addOnCompleteListener
}
Log.i("FIREBASE", "[CALLBACK] Token = ${task.result?.token}")
}
FCM 메시지 수신
메시지를 받으면 Firebase Messaging Service 하위 클래스에서 구현된 원격 메시지를 호출합니다.그 중에서 메시지를 투시하고 처리하는 논리를 정의합니다.
'서비스 정의'부분의 예시 코드는 각각 알림 메시지와 데이터 메시지에 대응한다.확인하세요.
FCM 메시지 보내기
가능하다면 정보를 받을 준비가 완성될 것이다.
Firebase 콘솔 또는 HTTP 요청을 통해 메시지를 보낼 수 있습니다.
a. 콘솔에서 보내기
알림 메시지를 보내려면 Firebase 콘솔에 로그인하여 필요한 항목을 열고 "Cloud Messaging"으로 이동하십시오.
First message 보내기를 클릭합니다.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
// 端末+アプリを一意に識別するためのトークンを取得
Log.i("FIREBASE", "[SERVICE] Token = " + token);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage != null) {
// 通知メッセージ
RemoteMessage.Notification notification = remoteMessage.getNotification();
if (notification != null) {
// 通知メッセージを処理
}
// データメッセージ
Map<String, String> data = remoteMessage.getData();
if (data != null) {
// データメッセージを処理
}
}
}
}
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String?) {
// 端末+アプリを一意に識別するためのトークンを取得
Log.i("FIREBASE", "[SERVICE] Token = ${token ?: "Empty"}")
}
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
remoteMessage?.let { message ->
// 通知メッセージ
message.notification?.let {
// 通知メッセージを処理
}
// データメッセージ
message.data?.let {
// データメッセージを処理
}
}
}
}
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener((task) -> {
if (!task.isSuccessful()) {
Log.w("FIREBASE", "getInstanceId failed.", task.getException());
return;
}
String token = (task.getResult() == null) ? "empty" : task.getResult().getToken();
Log.i("FIREBASE", "[CALLBACK] Token = " + token);
});
FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FIREBASE", "getInstanceId failed", task.exception)
return@addOnCompleteListener
}
Log.i("FIREBASE", "[CALLBACK] Token = ${task.result?.token}")
}
화면 왼쪽 상단에 있는 "새 알림"을 클릭하여 새 메시지를 보냅니다.기존 메시지를 복사할 수도 있습니다.
b.cURL 보내기
그리고 cURL을 사용하여 알림 메시지와 데이터 메시지를 보냅니다.더 이상 cURL을 배치하고 사용하는 방법을 설명하지 않습니다.
서버 키를 확인합니다.
Firebase 콘솔에서 톱니바퀴 모양 설정 아이콘 ① 을 클릭하여 화면을 엽니다.설정 화면에서 "클라우드 메시징"탭 ②를 클릭하십시오.서버 키 ③ 을 표시하고 복사하십시오.
다음은 데이터 메시지를 보내는 명령의 예입니다.
SERVER_KEY=(サーバーキー)
TARGET_TOKEN=(トークン)
curl -X POST -H "Content-Type:application/json" \
-H "Authorization:key=$SERVER_KEY" \
-d "{\"data\":{\"name\" : \"Taro Nihon\",\"age\" : \"20\",\"address\" : \"Tokyo\"},\"to\" : \"$TARGET_TOKEN\"}" \
https://fcm.googleapis.com/fcm/send
총결산
나는 코드 제작부터 정보 수신까지 써 보았다.
여기에는 최소한의 내용으로 FCM 메시지를 만들었지만 유효기간과 우선순위 등 다양한 정보를 포함할 수 있다.
다음 내용을 참고하여 각종 설치를 시도하십시오.
개정 기록
Reference
이 문제에 관하여(Android 응용 프로그램에 Firebase Cloud Messaging 설치(2) - 응용 프로그램에서 메시지 수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/outerlet/items/49a5346ba206eaf877d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)