https://developer.mozilla.org/ko/docs/Web/API/Service_Worker_API
외부에 있는 service-worker가 캐시역할을 해줘서 빠른로딩이 된다.
아래 링크에 푸시기능이 있다.
https://github.com/mdn/serviceworker-cookbook/
아직 해보지는 않았지만 해볼예정
A2HS로 어플을 만들고 나서 실행시키면 네이티브앱처럼 작동
url에 접속했을때는 네이티브앱처럼 안되는데 따로 설정법이 있는지 확인해봐야함
설정을 쉽게해주는 툴
https://www.pwabuilder.com/
{
"short_name": "이름",
"name": "이름",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon",
"purpose": "any"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192",
"purpose": "any"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512",
"purpose": "any"
}
],
"start_url": "/",
"display": "standalone",
"theme_color": "#ffffff",
"background_color": "#ffffff",
"description": "설명",
"scope": ".",
"lang": "ko",
"categories": ["utilities"]
}
icons.purpose
: any
maskable
둘중 하나 사용가능
any
: background color가 적용maskable
: 이미지에 safezone이 생성되서 어플이 알아서 이미지에 배경색을 넣음theme_color
: splash screen에서 상단 표시줄 색상
background_color
: splash screen에서 배경화면 (icons.purpose이 any일때만 동작)
적용해본 결과
제대로 만든 이미지라면 any, 대충만든 이미지면 maskable을 넣는게 좋을듯 하다.
스플래시 화면이 1초도 안되서 넘어가서 theme_color가 무슨색이든 신경쓸 시간이 없는것같다.
<link rel="manifest" href="manifest.json" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
npx create-react-app my-app --template cra-template-pwa
이미 작성된 프로젝트에 적용하려면 다른 경로에 위 명령어로 프로젝트를 만들어서 아래파일만 가져온다.
import * as serviceWorkerRegistration from './serviceWorkerRegistration';
serviceWorkerRegistration.register();
https://velog.io/@sibiwol/PWA-%EB%A7%8C%EB%93%A4%EA%B8%B0
지원브라우저가 많지 않다.
시크릿탭에서 작동하지 않는다.
localhost, https에서만 작동한다.
서브도메인 이슈
참고자료
https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Add_to_home_screen
https://velog.io/@sibiwol/PWA-%EB%A7%8C%EB%93%A4%EA%B8%B0