inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React에서 FCM 사용

1126

김민지

작성한 질문수 1

0

안녕하세요 !

FCM으로 푸시 기능을 짜다가,, 도저히 모르겠어서 글 남깁니다 ..!

 

문제는 콘솔에는 푸시 알림이 왔다는 게 찍히는데,

푸시가 보이지 않습니다 ... ㅠㅠ

[ 폴더 구조 ]

[ firebase-messaging-sw.js ]

self.addEventListener('push', function (e) {
  console.log('push: ', e.data.json())
  if (!e.data.json()) return

  const resultData = e.data.json().notification
  const notificationTitle = resultData.title
  const notificationOptions = {
    body: resultData.body,
    icon: resultData.image,
    tag: resultData.tag,
    ...resultData
  }
  console.log('push: ', { resultData, notificationTitle, notificationOptions })

  registration.showNotification(notificationTitle, notificationOptions)
})

[ messaging_init_in_sw.js ]

import { initializeApp } from 'firebase/app'
import { getMessaging, getToken } from 'firebase/messaging'

const firebaseConfig = {
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.REACT_APP_FIREBASE_APP_ID,
  measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID
}

function requestPermission() {
  console.log('푸시 허가 받는 중 ...')

  void Notification.requestPermission().then((permission) => {
    if (permission === 'granted') {
      console.log('푸시 알림이 허용되었습니다.')
    } else {
      console.log('푸시 알림이 허용되지 않았습니다')
    }
  })

  const app = initializeApp(firebaseConfig)
  const messaging = getMessaging(app)

  void getToken(messaging, { vapidKey: process.env.REACT_APP_FIREBASE_VAPID_KEY }).then((token) => {
    if (token.length > 0) {
      console.log('푸시 토큰 : ', token)
    } else {
      console.log('푸시 토큰 실패 !')
    }
  })
}

requestPermission()

 

토큰은 제대로 잘 받아와지는데,,, 혹시 서비스워커 코드에 문제가 있는 걸까요 ..?

react fcm firebase push

답변 1

0

김민지

image

혹시 localhost에서는 불가능한건가요 ..?!

CRA ? 질문입니다

0

4

0

교제 노션 복제 방법 문의

0

7

1

output style은 뭘선택하나요?

0

12

0

agent team vs shrimp task manager

0

13

1

rules 질문

0

16

1

[과제]1-9 피벗 테이블 만들어보기

0

25

2

cnt수를 구할 때 왜 user_pseudo_id 를 사용하나요?

0

32

2

eslint 플러그인 설정

0

34

2

onSettled 질문드립니다.

0

52

2

shrimp task 관련 질문

0

50

2

계획 단계

0

44

2

저는 클로드 로고가 안떠 있어요 ㅜㅜ

0

44

2

terminl을 사용해서 cursor 명령어 입력하는데 커서가 실행되다가 자동으로 꺼집니다 왜그럴까요?

0

38

2

커서가 강의화면이랑 달라요!

0

41

2

감정일기장 다이어리 필터 적용할때 컨텍스트를 Home에서 가져오는 특별한 이유가 궁금합니다.

0

49

2

강사님 플랜보드 보면서 느끼는건데

0

52

2

tdd green agent 에서 문의 드립니다.

0

46

2

강의 설명 중에 헷갈리는 것이 있네요

0

45

1

22강 [토큰 저장] 질문

0

48

1

클로드 사용 오류

0

68

3

음성불량

0

44

1

generateStaticParams() 응용 질문 드립니다.

0

63

2

Mac intel 에서 Homebrew 설치

0

52

1

🔥 [필수] 강의교안 & 소스코드 🔥 링크오류

0

58

2