!





다시 fcm 홈페이지에서 안에 내용 가져와서 config내부에 넣기

뒤로가기 눌러서 웹 구성의 키 값을 생성하고 해당 키값을 저장해둔다.




import {useEffect} from "react";
function App() {
async function requestPermission() {
//requesting permission using Notification API
const permission = await Notification.requestPermission();
if (permission === "granted") {
alert("Notification granted!");
} else if (permission === "denied") {
//notifications are blocked
alert("You denied for the notification");
}
}
useEffect(() => {
requestPermission();
}, []);
return (
<>
<h1>---</h1>
</>
)
}
export default App

12. public에 생성해주면 기존에 콘솔창에 뜨던 에러가 발생하지 않음.
import {useEffect} from "react";
import { getToken } from "firebase/messaging";
import {messaging} from "./firebase/firebaseConfig.ts";
function App() {
async function requestPermission() {
//requesting permission using Notification API
const permission = await Notification.requestPermission();
if (permission === "granted") {
const token = await getToken(messaging, {
vapidKey: 'BLSYgf-TW3moaGRDUvntwQnOl5QAD0QvOWxNZvJ421dQoYRffJ1eVCiqEsY_eaO2hC_tEAXyxH098EdZN2kzvp0',
});
//We can send token to server
console.log("Token generated : ", token);
} else if (permission === "denied") {
//notifications are blocked
alert("You denied for the notification");
}
}
useEffect(() => {
requestPermission();
}, []);
return (
<>
<h1>---</h1>
</>
)
}
export default App










위에서 다운받은걸 spring의 resource firebase내부에 넣어준다.
gradle 추가
implementation 'com.google.firebase:firebase-admin:9.3.0'





package org.zerock.api1014.fcm.service;
import com.google.firebase.FirebaseException;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.FirebaseMessagingException;
import com.google.firebase.messaging.Message;
import com.google.firebase.messaging.Notification;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import org.zerock.api1014.fcm.dto.FCMRequestDTO;
import org.zerock.api1014.fcm.exceptions.FCMMessageException;
@Service
@RequiredArgsConstructor
@Log4j2
public class FCMService {
private final FirebaseMessaging firebaseMessaging;
public void sendMessage(FCMRequestDTO fcmRequestDTO) {
if(fcmRequestDTO == null) {
throw new FCMMessageException("fcmRequestDTO is null");
}
if(fcmRequestDTO.getToken() == null) {
throw new FCMMessageException("fcmRequestDTO.getToken is null");
}
if(fcmRequestDTO.getTitle() == null || fcmRequestDTO.getTitle().isEmpty()) {
throw new FCMMessageException("title is null or empty");
}
Notification notification = Notification.builder()
.setBody(fcmRequestDTO.getBody())
.setTitle(fcmRequestDTO.getTitle())
.build();
Message message = Message.builder()
.setToken(fcmRequestDTO.getToken())
.setNotification(notification)
.build();
try {
firebaseMessaging.send(message);
} catch (FirebaseMessagingException e) {
throw new FCMMessageException(e.getMessage());
}
}
}
