SookDev

Next.js 에서 PWA 를 통한 웹푸시 설정하기

사용스택 : Next.js, firebase
리액트로 시도..했었다..
환경 : 리액트
애초에 pwa 를 사용할것이라면 서비스워커가 포함된 템플릿을 설정해줘야함.
🚨 만약 미리 설정을 하지않았다면?
18버전이 후 CRA 로 받더라도 service-worker 가 없으므로 인스톨을 해주어야 하는데
이미 프로젝트를 만든 상태라면 템플릿을 따로 추가할 방법이 없으니, pwa가 적용된 프로젝트를 새로 만들어 서비스워커 관련 코드를 복붙해주는게 제일 간단한 방법인듯 하다.
  1. service-worker.js , serviceWorkerRegistration.js 그대로 복붙하여 기존프로젝트에 넣는다.
  1. package.json 의 dependencies 에 아래의 항목 추가
  1. 기존 프로젝트에서 npm install
  1. serviceWorkerRegistration.register() 를 추가한다.
notion image

🎄 PWA 를 위한 Next.js 환경 설치하기

혹시몰라 리액트 , 리액트라우터 돔 17.0.2 버전, 넥스트 12.0.1 버전으로 install
 
폴더구조

next.config.js

manifest.json

public 안에 manifest.json 파일을 직접 추가할 수 있지만, manifest generator 를 이용하여 다운로드 가능.
  • Name : PWA의 이름
  • Short name : 앱 이름을 표시할 공간이 충분하지 않을 때 나타나는 이름
  • Display : homescreen icon을 통해 실행될 때 app 화면이 보여지는 형태
    • browser : 일반 브라우저와 동일하게 보입니다.
    • standalone : 다른 앱들처럼 최상단에 상태표시줄을 제외한 전체화면으로 보입니다.
    • fullscreen : 상태표시줄도 제외한 전체화면으로 보여줍니다.(ex. 게임)
    • minimul-ui : fullscreen과 비슷하지만 뒤로가기, 새로고침등 최소한의 영역만 제공합니다.(모바일 크롬 전용)
  • Description : app의 description 정보
  • Application Scope(=scope) : app 내에서 PWA 기능을 적용할 범위
  • Start url : app이 최초 실행 될 때 load되는 file의 경로
  • Background color : 스플래시 배경색
  • Theme color : 전체적인 테마색
다운받은 후 manifest.webmanifest 이름을 manifest.json 으로 변경한 후 public 디렉토리 내부에 넣어둔다.

파비콘 디렉토리생성

밑의 사이트에서 파비콘 생성하여 public 폴더 내 생성

ios 아이콘 메타태그

IOS 스플래시 메타태그

스플래시 : 앱을 열 때 나오는 로딩화면.
스플래시 제너레이터를 통해 만든 후 Appscope 에 적용하여 폰 화면 별 다운로드를 받을 수 있다.
해당 다운로드 받는 항목들을 public 내 삽입한다.

메타태그 적용

브라우저가 PWA라는것을 알아채고 manifest에 접근할 수 있도록 메타태그를 적용해야하므로 _document.jsx 파일을 생성한다.
해당파일의 Head 태그 내부에 manifest.json 의 경로와 meta 태그, 아이콘을 넣어주도록 한다.
 
yarn build + yarn dev
빌드 및 start 시 [PWA] 가 반드시 나와야 제대로 적용된것이라고 할 수 있다.
notion image
notion image
다음 화면과 같이 나오면 서비스워크 연결 성공!
 
notion image
 

🎄 파이어베이스 환경설정

파이어베이스 사이트에서 로그인 후 웹앱을 생성한다.
notion image
notion image
웹앱에 firebase 추가까지 완료하였으면 콘솔창으로 넘어간다.
이때 톱니바퀴모양을 눌러 설정을 들어간 후 클라우드 메시징을 클릭한다.
처음에 아무설정을 안해놨다면 colude Messaging API 가 사용중지됨으로 표시될텐데, 닷버거를 눌러
google cloude console 에서 관리를 클릭한다.
notion image
클라우드 메세징의 사용설정을 변경하면 활성화가 된 것을 확인할 수 있다.
notion image
notion image
 
파이어베이스 인스톨 후 _app.js 에 파이어베이스에서 받은 SDK 를 삽입하도록 한다.