주제를 사용하여 기본 Firebase 푸시 알림에 반응합니다.
주제 알림을 사용하는 이유.
FCM 주제 메시징을 사용하면 특정 주제를 선택한 여러 기기에 메시지를 보낼 수 있습니다. 주제를 작성하고 사용자가 해당 주제를 구독하면 Fire-Cloud-Messaging이 올바른 장치로 안정적으로 메시지 라우팅 및 전달을 처리합니다.
예를 들어 스포츠 앱 사용자는 좋아하는 팀의 라이브 게임 점수 자동 업데이트를 구독할 수 있습니다.
전제 조건
시작하기 전에 React Native로 프로젝트를 생성할 수 있고 활성 Firebase 프로젝트가 있다고 가정합니다. 이러한 전제 조건을 충족하지 않는 경우 아래 링크를 따르십시오.
먼저 firebase 클라우드 메시징 패키지를 설치하고 통신합니다.
앱 모듈 설치 및 설정
npm install @react-native-firebase/app
메시징 모듈 설치npm install @react-native-firebase/messaging
고객 입장에서
먼저 rnFireBase.ts를 생성합니다.
수입품:
import messaging from "@react-native-firebase/messaging";
다음 코드를 추가하여 알림을 수신하기 위해 클라이언트로부터 권한을 요청합니다.export const requestUserPermission = async () => {
const authStatus = await messaging().requestPermission();
const enabled =
authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
authStatus === messaging.AuthorizationStatus.PROVISIONAL;
if (enabled) {
console.log("Authorization status:", authStatus);
}
};
그런 다음 사용자가 특정 주제를 구독할 수 있도록 코드를 추가해야 합니다.
export const subscribeTopic = async (topic) => {
messaging()
.subscribeToTopic(topic)
.then(() => console.log("Subscribed to topic:", topic))
.catch((e) => {
console.log(e);
});
};
이제 어디에서나 subscribeTopic을 호출하여 특정 주제를 구독할 수 있습니다.
예를 들어 index.js에서 다음을 수행하십시오.
subscribeTopic("new-listing");
이제 우리는 클라이언트 측을 위해 한 가지 더 간단한 일을 해야 합니다. 바로 아래와 같이 React Native Component를 추가하는 것입니다.import messaging from "@react-native-firebase/messaging";
import { useEffect } from "react";
import { Alert } from "react-native";
import { requestUserPermission } from "./rnfirbase";
const RemotePushController = () => {
//if app is in background then also handle the notification
messaging().setBackgroundMessageHandler(async function (remoteMessage) {
console.log("Message handled in the background!", remoteMessage);
});
useEffect(() => {
requestUserPermission();
//handles notifcations
messaging().onMessage(async (remoteMessage) => {
Alert.alert("A new FCM message arrived!", JSON.stringify(remoteMessage));
});
}, []);
return null;
};
export default RemotePushController;
이제 원하는 곳에 RemotePushController를 추가하십시오. 루트 구성 요소에 RemotePushController를 추가했습니다.
건배:) 우리는 모두 클라이언트 측에서 완료되었습니다.
서버 측
서버 측의 경우 먼저 Firebase를 초기화해야 합니다.
이미 초기화한 경우 건너뛰고 아직 없는 경우 이 행을 추가하십시오
export const messaging = admin.messaging();
.import admin from "firebase-admin";
import serviceAccount from "./service_account.json";
const app = admin.initializeApp({
credential: admin.credential.cert({
privateKey: serviceAccount.private_key,
clientEmail: serviceAccount.client_email,
projectId: serviceAccount.project_id,
}),
});
export const messaging = admin.messaging();
export const firebaseApp = app;
이제 보낼 notify.ts를 작성하십시오.
알림
import { messaging } from "./initFirebase";
export const sendNotificationToClient = async (topic: string, data: any) => {
// console.log(messaging);
messaging
.sendToTopic(topic, data)
.then((response) => {
console.log(`Notifications sent:${response}successful `);
})
.catch((error) => {
console.log("Error sending message:", error);
});
};
export default sendNotificationToClient;
sendNotifications.ts 만들기
import * as notify from "./notify";
export const notificationSender = async (topic: string, message: string) => {
try {
// If we want to save topic to DataBase then we do that here;
const messagetoSend = {
notification: {
title: "New Test Message",
body: message,
},
};
notify.sendNotificationToClient(topic, messagetoSend);
} catch (err) {
console.log("🚀 ~ file: Message.ts ~ line 19 ~ addMessage ~ err", err);
}
};
모두 끝났습니다. 지금해야 할 일은 전화하는 것뿐입니다
notificationSender(
"new-listing",
`This is a string message is being to sent with notification `
);
서버 코드의 어느 곳에서나.
Reference
이 문제에 관하여(주제를 사용하여 기본 Firebase 푸시 알림에 반응합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ahsan131hub/react-native-fire-base-push-notification-using-topics-2fnf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)