소스코드
https://github.com/LDK1009/Supabase-FCM-Push-Notification
GitHub - LDK1009/Supabase-FCM-Push-Notification: Next.js + Supabase + FCM 을 활용한 푸쉬 알림 기능 소스코드 저장
Next.js + Supabase + FCM 을 활용한 푸쉬 알림 기능 소스코드 저장소입니다. - LDK1009/Supabase-FCM-Push-Notification
github.com
프로젝트 파일별 설명
public / firebase-messaging-sw.js
파이어베이스 메시징 서비스워커가 작성되어있습니다.
서비스워커 실행/등록, 푸쉬 알림 도착/클릭 시 실행할 코드가 작성되어 있습니다.
public / manifast.json
PWA 관련 설정이 포함되어 있습니다.
파일을 수정하여 PWA 앱의 이름, 아이콘 등의 설정을 변경할 수 있습니다.
이 파일은 필자가 PWA 앱 내 푸쉬 알림 테스트를 위해 생성하였으며 웹 푸쉬 알림 구현과 무관합니다.
src / components / HomeContainer.tsx
홈에서 보여질 컴포넌트입니다.
현재 접속한 브라우저의 푸쉬 알림 지원 여부와 알림 권한 상태를 표시합니다.
푸쉬 알림 권한 요청 버튼을 통해 알림 권한을 요청합니다.
사용자가 알림 권한 수락 시 해당 기기의 FCM 토큰 정보를 확인할 수 있습니다.
src / lib / firebaseConfig.ts
파이어베이스 프로젝트 설정 관련 파일입니다.
프로젝트 설정, 프로젝트 초기화, 메세징 초기화를 담당합니다.
보안을 위해 프로젝트 설정 시 각 설정값은 환경변수(.env)을 사용합니다.
src / utils / pushNotification.ts
푸쉬 알림 관련 모듈 파일입니다.
푸쉬 알림 권한 요청, FCM 토큰 발급, 포그라운드 환경 푸쉬 알림 수신 관련 함수를 정의합니다.
firebaseConfig에서 초기화한 메세징을 사용합니다.
위 함수들을 컴포넌트에서 임포트하여 사용합니다.
ex) 알림 권한 요청 버튼 클릭 시 푸쉬 알림 권한 요청 함수와 FCM 토큰 발급 함수 호출
사용방법
프로젝트 세팅
git clone -b fcm-push-notification https://github.com/LDK1009/Supabase-FCM-Push-Notification.git
프로젝트 클론
cd ./Supabase-FCM-Push-Notification
프로젝트로 이동
npm install
의존성 설치
npx next dev --experimental-https
개발 서버 실행(HTTPS)
파이어베이스 프로젝트 생성
https://firebase.google.com/?hl=ko
Firebase | Google's Mobile and Web App Development Platform
개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요.
firebase.google.com
파이어베이스 홈페이지에 접속합니다.
회원가입 및 로그인을 합니다
홈페이지 우측 상단 'go to console' 버튼을 클릭해 콘솔로 입장합니다.
'Firebase 프로젝트 만들기' 버튼을 클릭합니다.
프로젝트 생성 완료
파이어베이스 프로젝트 앱 생성
앱 이름 입력 후 앱 등록 버튼 클릭
파이어베이스 초기화 코드를 복사합니다.
복사한 초기화 코드는 이후 과정에서 쓰이니 잘 보관해주세요.
프로젝트 설정에서도 파이어베이스 초기화 코드 확인이 가능합니다.
파이어베이스 프로젝트 앱 생성 완료.
웹푸쉬 인증서 발급
프로젝트 설정 > 클라우드 메시징 > 웹 푸시 인증서
웹 푸시 인증서를 발급한 후 키쌍을 복사합니다.
파이어베이스 프로젝트 세팅
프로젝트 폴더 최상위 레벨에 .env 파일을 생성합니다.
# 파이어베이스 초기화
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
# 파이어베이스 웹 푸시 인증서
NEXT_PUBLIC_FIREBASE_VAPID_KEY=
.env 파일에 위 코드를 복사 붙여넣기 후 이전에 복사했던 파이어베이스 초기화 코드를 하나씩 붙여넣습니다.
웹 푸시 알림 테스트
npx next dev --experimental-https
터미널에서 위 명령어를 입력하여 개발서버를 HTTPS 로 실행합니다.
이후 브라우저에서 localhost:3000에 접속합니다.
푸쉬 알림 권한 요청 버튼 클릭 후 하단에 발급된 FCM 토큰을 복사합니다.
테스트 메시징을 위해 파이어베이스 > 메시징 으로 접속합니다.
푸쉬 알림 제목, 알림 텍스트를 입력 후 테스트 메시지 전송 버튼을 클릭합니다.
복사했던 FCM 토큰을 등록 및 추가한 후 테스트 버튼을 클릭합니다.
위처럼 웹 푸쉬 알림이 정상적으로 작동합니다.
만약 테스트 메시징에도 웹 푸쉬 알림이 오지 않는다면 아래 사항을 검토하세요
1. 개발 서버를 HTTPS로 실행하세요.
2. .env 환경변수와 파이어베이스 초기화 변수 + 웹 푸쉬 인증서 변수가 일치한 지 검토하세요
3. 이 외 추가 질문이 있으시다면 댓글로 남겨주세요
+추가(모바일 웹 푸시 알림 테스트)
모바일 웹 푸쉬 알림은 배포 후 진행하여야합니다.
자세한 이유와 방법은 아래 글을 참고해주세요
배포 방법
https://sooncoding.tistory.com/282
[Vercel] Vercel 배포 접속 오류 해결 방법 | 연결이 비공개로 설정되어 있지 않습니다. | net::ERR_CERT_CO
배경프로젝트 개발 후 Vercel 배포 시 아래와 같은 오류가 발생하였다.연결이 비공개로 설정되어 있지 않습니다. 공격자가 love-court-c75aeux9m-dong-kyu-lees-projects.vercel.app에서 사용자의 정보를 도용
sooncoding.tistory.com
https://sooncoding.tistory.com/103
[Vercel] 가비아 도메인 구매 방법 + Vercel 도메인 변경 방법
도메인 구매 아래 링크(가비아)에서 도메인을 구매한다. https://domain.gabia.com/regist/regist_domain 가비아: 대한민국 도메인 점유율 1위대한민국 100만 도메인 등록 업체domain.gabia.com이 때, 도메인 구매
sooncoding.tistory.com
배포 후 진행해야하는 이유
https://sooncoding.tistory.com/274
[트러블슈팅] 서비스워커 등록 및 FCM 토큰 발급 오류 해결방법
소스코드https://github.com/LDK1009/Supabase-FCM-Push-Notification GitHub - LDK1009/Supabase-FCM-Push-Notification: Next.js + Supabase + FCM 을 활용한 푸쉬 알림 기능 소스코드 저장Next.js + Supabase + FCM 을 활용한 푸쉬 알림 기
sooncoding.tistory.com
'라이브러리' 카테고리의 다른 글
OpenAI API(GPT) 사용법 (0) | 2025.03.30 |
---|---|
[react-swiper] 스와이퍼 범위가 무한히 늘어나는 버그 | 스크롤바가 무한히 늘어나는 원인 및 해결방법 (0) | 2025.02.23 |
[styled-components] Next.js 15 + styled-components 전역 스타일 설정 방법 | 테마 설정 방법 | 테마, (0) | 2025.02.12 |
[react-dnd] 드래그앤드랍 시 최신 state를 가져오지 못하는 버그 (0) | 2025.02.09 |
[Swiper] 리액트 스와이퍼 자동 재생 특정 횟수에서 멈추기 (0) | 2025.01.14 |