create-react-app에push 알림을 받는 서비스 워커 추가
7317 단어 ReactTypeScript
추식 알림을 해보고 싶다!!!
근데 kotlin이랑 swift 다 안 나오네~
브라우저도 웹소켓?너 그거 먹을 수 있어?
인프라 엔지니어 자신에게는 엄격하죠
...
이렇게 생각하면 서비스 워커를 사용하면 브라우저에서 간단하게 시도할 수 있다는 소문을 듣게 된다
그리고create-react-app(cra)으로 템플릿을 만들면 서비스워커의 보일러판도 달라붙어 사용하기로 했습니다.
또 필자는 앞부분에 조예가 전혀 없으니 재미, 단어 등이 틀렸다면 지적해 주십시오.
환경
인도물
step by step
등장인물
일반 종속 모듈 설치
안심할 테니 typescript로 보내주세요.
eslint는cra에 (최신판
yarn start
넣을 때 욕을 먹는다)yarn create create-react-app pj --typescript
cd pj
yarn add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser @typescript-eslint/typescript-estree esli
nt-config-prettier eslint-plugin-prettier eslint-plugin-react husky lint-staged
서비스 작업자 등록
commit
만약 이렇다면precache만 주시기 때문에 알림을 받을 수 있도록 편집합니다
src/serviceWorker.ts
에서 3점 추가applicationServerPublicKey
web-push 사용 생성
urlB64ToUint8Array
https://github.com/GoogleChromeLabs/web-push-codelab/blob/master/app/scripts/main.js#L31
registration.pushManager.subscribe({})...
webworker
서비스 작업자 활성화
commit
기본적으로 서비스worker의register가 닫혀서 사용합니다
src/index.tsx
의serviceWorker.unregister()
을(를) serviceWorker.register()
로 변경이 녀석을 기용해도 프로덕션의 env가 아니면 움직이지 않는다react documentbuild라고 써있어봐)
알림 버튼 배치
commit
구성 요소를
App.tsx
에 배치합니다.인상으로 보치라면 알림이 날아가는 느낌이에요.디버깅할 때 귀찮아서 서비스 워커의 unregister 단추도 준비했습니다.
sw의 교체
그럼에도 불구하고 서비스워커는 이동하지만기본 웹 팩.config.jsworkbox의GenerateSW에서 서비스워커를 생성하기 때문에precache 기능만 발휘할 수 있습니다
그래서 직접 만든 sw로 바꿔보도록 하겠습니다.
react-app-rewired 추가
commit
참고 자료
진행
yarn eject
후 나오는 웹팩.config.js를 다시 쓸 수 있지만 거스를 수 없는 변화는 무섭다... 따라서craconfig
react-app-rewired
를 덮어쓸 수 있습니다yarn add -D react-app-rewired
config-overrides.js
자신의 서비스 워커 쓰기
commit
typescript로 쓰려고 했는데 웹팩력이 없어서 포기했어요
쓰기 백엔드
otiai10 씨의 보도
하는 일은 typescript화일 뿐이기 때문에 생략
이동
yarn build && serve -s build
oO(왜 크롬의 아이콘이 변하지 않는지...)
느끼다
about:serviceworkers
about:debugging#workers
이 페이지를 열면 전체 Firefox가 동결될 때까지 CPU 부하가 증가합니다.기타 메모
참고 문헌
Reference
이 문제에 관하여(create-react-app에push 알림을 받는 서비스 워커 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kentac55/items/bbb59a9ecf974713eca5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)