푸시 알림을 PWA에 통합하는 방법
게시 됨: 2021-04-28목차
오늘 튜토리얼에서는 Firebase를 사용하여 푸시 알림을 PWA에 통합하거나 더 구체적으로 말하면 HTTPS 요청을 사용하여 메시지를 보낼 수 있는 클라우드 메시징 기능을 사용합니다.
프로그레시브 웹 앱 및 푸시 알림
프로그레시브 웹 앱은 끊임없이 변화하는 움직임이기 때문에 기술 자체가 기본 앱과 동등(기능 면에서)된 것을 보는 것은 놀라운 일이 아닙니다.
추천 자료: PWA 대 네이티브: 어느 것이 더 잘 어울리나요?
알림 트리거는 개발자가 사용자의 장치가 비행기 모드에 있는 경우에도 알림을 예약할 수 있는 기능을 제공합니다.
Jon Krafcik, Chrome Dev Summit 2019

이러한 모든 급진적인 변화가 있는 상태에서 PWA에 더 많은 수익을 창출하기 위해 이를 활용하지 않는 것은 낭비입니다. 그리고 이 튜토리얼을 사용하여 자신만의 푸시 알림 기능을 쉽게 설정할 수 있으므로 지나치게 복잡하지도 않습니다.
추천 자료: 전자 상거래를 위한 프로그레시브 웹 앱(PWA)의 9가지 필수 기능
푸시 알림을 PWA에 통합하는 방법
오늘 튜토리얼에서는 Firebase 를 사용하여 푸시 알림을 PWA에 통합할 것입니다. 특히 HTTPS 요청을 사용하여 메시지를 보낼 수 있는 클라우드 메시징 기능입니다.
전제 조건
- Firebase 계정(Firebase 내에서 프로젝트를 생성할 예정이므로)
- 프로그레시브 웹 앱. 간단한 데모를 위해 명령을 사용하여 만들 수 있는 기본 PWA인 create-react-app을 사용합니다.

1단계 : 기본 PWA 만들기
create-react-app을 사용하여 기본 PWA를 만들 것이므로 먼저 NodeJS를 다운로드하겠습니다. NodeJS 설치가 끝나면 NodeJS 명령 프롬프트 를 열고 다음 명령을 실행합니다.
지정된 디렉토리에 간단한 React 앱을 생성하려면:
npx create-react-app your-pwa-directory
현재 작업 디렉토리를 새로 생성된 React 앱으로 변경합니다.
cd your-pwa-디렉토리
프로젝트에 Firebase JavaScript 라이브러리를 추가합니다.
npm install firebase --save

2단계: push-notification.js
만들기
다음 단계는 모든 알림 처리를 담당할 모듈을 만드는 것입니다. <your-pwa-directory>\src
에서 push-notification.js
라는 파일을 만듭니다.
먼저 Firebase를 초기화하고 프로젝트 키를 전달하는 함수를 만들어 보겠습니다. Firebase > 프로젝트 개요 → 프로젝트 설정으로 이동하여 다음 아이콘을 클릭하여 프로젝트의 키를 찾을 수 있습니다.

그러면 PWA용 Firebase SDK가 포함된 다른 페이지로 이동합니다.

이제 프로젝트에 대한 키가 있으므로 다음 코드를 push-notification.js
에 추가해 보겠습니다.
'firebase'에서 firebase 가져오기; 내보내기 const initializeFirebase = () => { firebase.initializeApp({ API 키: "XXXXXXXXXXXXX", 인증 도메인: "XXXXXXXXXXXXX", 데이터베이스 URL: "XXXXXXXXXXXXX", 프로젝트 ID: "XXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXX", MessagingSenderId: "XXXXXXXXXXXXX", 앱 ID: "XXXXXXXXXXXXX" }); }
이것으로 모든 알림 처리를 담당하는 함수를 만들었습니다. 이제 이 함수를 가져와서 호출해야 합니다. index.js
를 다음과 같이 편집하십시오.
'반응'에서 React 가져오기; 'react-dom'에서 ReactDOM을 가져옵니다. 가져오기 './index.css'; './App'에서 앱 가져오기; import * as serviceWorkerRegistration from './serviceWorkerRegistration'; './reportWebVitals'에서 reportWebVitals 가져오기; 'firebase'에서 firebase 가져오기; import { initializeFirebase } from './push-notification'; ReactDOM.render(<앱 />, document.getElementById('루트')); initializeFirebase();
3단계: 서비스 워커 생성
서비스 워커는 오프라인 기능, 푸시 알림 및 리소스 캐싱을 지원하는 프로그레시브 웹 앱 이면의 기술 이름입니다.
SimiCart, 프로그레시브 웹 앱에 대해 알아야 할 모든 것
onMessage
이벤트를 수신하고 결과적으로 사용자의 장치로 알림을 보낼 수 있도록 하려면 서비스 작업자가 필요합니다. 기본적으로 Firebase는 firebase-messaging-sw.js
라는 파일을 자동으로 찾습니다.

파일이 제공되는 디렉토리에 firebase-messaging-sw.js
를 추가해 보겠습니다. 우리는 create-react-app
프로젝트이기 때문에 이 firebase-messaging-sw.js
는 우리의 공개 폴더에 들어갈 것입니다:
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js'); importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-messaging.js'); firebase.initializeApp({ API 키: "XXXXXXXXXXXXX", 인증 도메인: "XXXXXXXXXXXXX", 데이터베이스 URL: "XXXXXXXXXXXXX", 프로젝트 ID: "XXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXX", MessagingSenderId: "XXXXXXXXXXXXX", 앱 ID: "XXXXXXXXXXXXX" }); const 메시징 = firebase.messaging();
아직 PWA Service Worker에 대해 들어보지 못했다면 이 놀라운 기술에 대해 모두 배울 수 있는 독점 기사가 있습니다.
4단계: 알림을 보낼 수 있는 사용자 권한 요청
지금은 개인 정보의 시대이며 원치 않는 무단 알림을 보내 사용자를 귀찮게 하고 싶지 않습니다!
사용자의 권한을 요청하려면 다음을 push-notification.js
에 추가하기만 하면 됩니다.
'firebase'에서 firebase 가져오기; 내보내기 const initializeFirebase = () => { firebase.initializeApp({ API 키: "XXXXXXXXXXXXX", 인증 도메인: "XXXXXXXXXXXXX", 데이터베이스 URL: "XXXXXXXXXXXXX", 프로젝트 ID: "XXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXX", MessagingSenderId: "XXXXXXXXXXXXX", 앱 ID: "XXXXXXXXXXXXX" }); } 내보내기 const askForPermissionToReceiveNotifications = 비동기() => { 노력하다 { const 메시징 = firebase.messaging(); Messaging.requestPermission()을 기다립니다. const 토큰 = messaging.getToken()을 기다립니다. console.log('귀하의 토큰은:', 토큰); 반환 토큰; } 잡기(오류) { console.error(오류); } }
그리고 이 함수는 어딘가에서 호출해야 하므로 버튼 클릭으로 추가할 것입니다. 다음과 같이 /src/ 디렉토리에서 app.js
파일을 편집하십시오.
'./logo.svg'에서 로고 가져오기; 가져오기 './App.css'; './push-notification'에서 { askForPermissionToReceiveNotifications} 가져오기; 함수 앱() { 반품 ( <div className="앱"> <header className="앱 헤더"> <img src={로고} className="앱 로고" alt="로고" /> <p> <code>src/App.js</code>를 편집하고 저장하여 다시 로드합니다. </p> <아 className="앱 링크" href="https://reactjs.org" 대상="_blank" rel="noopener noreferrer" > 반응 배우기 </a> <버튼 onClick={askForPermissionToReceiveNotifications} > 알림을 받으려면 클릭하세요. </버튼> </헤더> </div> ); } 기본 앱 내보내기;
이제 프로젝트를 시작하고 다음과 같은 알림을 받으려면 클릭 버튼이 표시되어야 합니다.

버튼을 클릭하면 권한을 묻는 팝업이 표시됩니다.

허용 을 클릭하고 브라우저의 콘솔을 확인하십시오. 토큰을 알리는 메시지가 표시되어야 합니다.

다음 단계에서 필요하므로 이제 이 토큰을 다른 곳에 저장 하십시오.
5 단계 : Postman으로 푸시 알림 보내기
다음 단계에서는 Postman을 사용하여 Firebase의 클라우드 메시징 서비스를 통해 알림을 보냅니다.
Postman에서 다음 정보를 사용하여 POST 요청을 생성합니다.
- 요청 URL : https://fcm.googleapis.com/fcm/send
- 헤더 : POST 요청의 헤더에 다음 키가 필요합니다.
권한 부여: 키= SERVER_KEY
콘텐츠 유형 : application/json

참고 : SERVER_KEY
는 Firebase 설정의 클라우드 메시징 탭에서 찾을 수 있습니다.
- Body : POST 요청의 본문을 다음 코드로 채웁니다.
{ "알림": { "제목": "SimiCart", "body": "푸시 알림 테스트", "click_action": "http://localhost:3000/", "아이콘": "https://i.imgur.com/5zO5cce.png" } "to": "USER_TOKEN" }
USER_TOKEN
을 4단계에서 얻은 토큰으로 바꿉니다( 알림을 받으려면 클릭 버튼 클릭 ). Body type을 raw 및 JSON 으로 선택하는 것을 잊지 마십시오.

이제 보내기 를 클릭하면 오른쪽 하단 모서리에 알림 팝업이 표시됩니다.

참고 : 이 알림은 앱이 백그라운드에 있거나 최소화된 경우에만 나타납니다.
축하합니다! 이제 PWA에서 알림을 보낼 수 있습니다!
결론
이 가이드를 통해 이제 자신만의 푸시 알림 기능을 자신 있게 설정할 수 있기를 바랍니다. 새로운 기술인 Progressive Web Apps는 기술에 정통하지 않은 사용자에게는 복잡한 일입니다. 이것이 PWA에 대한 다년간의 경험으로 모든 요구를 처리할 수 있는 SimiCart와 같은 즉시 사용 가능한 솔루션 제공업체가 있는 이유입니다.