๋งค๋ํ์คํธ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ๋ง์คํฐํ์ฌ ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA)์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ์ธ์. ์ด ์ข ํฉ ๊ฐ์ด๋๋ ๋ค์ํ ๋์คํ๋ ์ด ์ต์ ๊ณผ ์ฌ๋ฌ ํ๋ซํผ์์์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฏธ์น๋ ์ํฅ์ ํ๊ตฌํฉ๋๋ค.
ํ๋ก ํธ์๋ PWA ๋งค๋ํ์คํธ ๋์คํ๋ ์ด: ๊ณ ๊ธ ๋์คํ๋ ์ด ๋ชจ๋ ์ค์
ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA)์ ์ฌ์ฉ์๊ฐ ์น ์ฝํ ์ธ ์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ํ๋ช ์ ์ผ์ผํค๊ณ ์์ต๋๋ค. ์ต์ ์น ๊ธฐ์ ์ ํ์ฉํ์ฌ PWA๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ง์ ์ฑ๊ณผ ์ ์ฌํ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ, ๊ธฐ์กด ์น์ฌ์ดํธ์ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํฉ๋๋ค. PWA์ ํต์ฌ์๋ ์น ์ฑ ๋งค๋ํ์คํธ๊ฐ ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฆ, ์์ด์ฝ, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ๊ฒ๋ ๋์คํ๋ ์ด ๋ชจ๋์ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ JSON ํ์ผ์ ๋๋ค. ์ด ๊ธ์์๋ PWA ๋งค๋ํ์คํธ ๋ด์ ๋์คํ๋ ์ด ๋ชจ๋ ์์ฑ์ ๋ํ ๊ณ ๊ธ ์ค์ ์ ์ฌ๋ ์๊ฒ ๋ค๋ฃจ๋ฉฐ, ๋ค์ํ ์ต์ ๊ณผ ๊ทธ๊ฒ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฏธ์น๋ ์ํฅ์ ํ๊ตฌํฉ๋๋ค.
์น ์ฑ ๋งค๋ํ์คํธ ์ดํดํ๊ธฐ
๋์คํ๋ ์ด ๋ชจ๋์ ๋ณต์กํ ๋ด์ฉ์ ์ดํด๋ณด๊ธฐ ์ ์, ์น ์ฑ ๋งค๋ํ์คํธ์ ์ญํ ์ ๊ฐ๋จํ ๋์ง์ด ๋ณด๊ฒ ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก manifest.json ๋๋ manifest.webmanifest๋ผ๋ ์ด๋ฆ์ ๋งค๋ํ์คํธ ํ์ผ์ PWA์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๊ฐ๋จํ JSON ํ์ผ์
๋๋ค. ์ด ๋ฉํ๋ฐ์ดํฐ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฑ์ ์ด๋ป๊ฒ ์ค์นํ๊ณ ํ์ํด์ผ ํ๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋งค๋ํ์คํธ ๋ด์ ์ฃผ์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- name: ์ฌ์ฉ์์๊ฒ ํ์๋๋ PWA์ ์ด๋ฆ์ ๋๋ค.
- short_name: ๊ณต๊ฐ์ด ์ ํ๋ ๋ ์ฌ์ฉ๋๋ ๋ ์งง์ ๋ฒ์ ์ ์ด๋ฆ์ ๋๋ค.
- icons: ์ฑ์ ํ ํ๋ฉด ์์ด์ฝ, ์คํ๋์ ํ๋ฉด ๋ฐ ๊ธฐํ UI ์์์ ์ฌ์ฉ๋๋ ๋ค์ํ ํฌ๊ธฐ์ ํ์์ ์์ด์ฝ ๋ฐฐ์ด์ ๋๋ค.
- start_url: PWA๊ฐ ์คํ๋ ๋ ๋ก๋๋๋ URL์ ๋๋ค.
- display: ์ด ๊ธ์ ์ด์ ์ธ ๋์คํ๋ ์ด ๋ชจ๋๋ PWA๊ฐ ์ฌ์ฉ์์๊ฒ ์ด๋ป๊ฒ ํ์๋๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- background_color: ์คํ๋์ ํ๋ฉด์ ์ฌ์ฉ๋๋ ๋ฐฐ๊ฒฝ์์ ๋๋ค.
- theme_color: ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋ชฉ ํ์์ค ๋ฐ ๊ธฐํ UI ์์์ ์ฌ์ฉํ๋ ํ ๋ง ์์์ ๋๋ค.
- description: PWA์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ ๋๋ค.
- screenshots: ์ฑ ์ค์น ๋ฐฐ๋์ ํ์ํ ์คํฌ๋ฆฐ์ท ๋ฐฐ์ด์ ๋๋ค.
- categories: PWA๊ฐ ์ํ ์นดํ ๊ณ ๋ฆฌ ๋ฐฐ์ด์ ๋๋ค(์: "books", "shopping", "productivity").
- prefer_related_applications: ํ๋ซํผ๋ณ ์ฑ์ ์น ์ฑ๋ณด๋ค ์ฐ์ ํด์ผ ํ๋์ง๋ฅผ ๋ํ๋ด๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋๋ค.
- related_applications: ์ค์น ๋์์ผ๋ก ๊ฐ์ฃผ๋๋ ํ๋ซํผ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐ์ด์ ๋๋ค.
๋งค๋ํ์คํธ ํ์ผ์ HTML์ <head> ์น์
์ ์๋ <link> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ PWA์ ์ฐ๊ฒฐ๋ฉ๋๋ค:
<link rel="manifest" href="manifest.json">
๋์คํ๋ ์ด ๋ชจ๋ ์ต์ ์ดํด๋ณด๊ธฐ
๋งค๋ํ์คํธ์ display ์์ฑ์ ๋ค ๊ฐ์ง ๊ณ ์ ํ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ฐ ๋ชจ๋๋ PWA๊ฐ ์ฌ์ฉ์์๊ฒ ํ์๋๋ ๋ฐฉ์์ ์ํฅ์ ์ค๋๋ค:
- fullscreen: PWA๊ฐ ์ ์ฒด ํ๋ฉด์ ์ฐจ์งํ๋ฉฐ ์ฃผ์ ํ์์ค ๋ฐ ํ์ ๋ฒํผ๊ณผ ๊ฐ์ ๋ธ๋ผ์ฐ์ ์ UI ์์๋ฅผ ์จ๊น๋๋ค.
- standalone: PWA๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ณ๊ฐ์ ์์ฒด ์ฐฝ์์ ์คํ๋๋ฉฐ, ์ ๋ชฉ ํ์์ค์ ์์ง๋ง ๋ธ๋ผ์ฐ์ UI ์์๋ ์์ต๋๋ค. ์ด๋ PWA์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ์ข ์ข ์ ํธ๋๋ ๋์คํ๋ ์ด ๋ชจ๋์ ๋๋ค.
- minimal-ui: ๋ ๋ฆฝํ๊ณผ ์ ์ฌํ์ง๋ง ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ ๋ฐ ์๋ก ๊ณ ์นจ ๋ฒํผ๊ณผ ๊ฐ์ ์ต์ํ์ ๋ธ๋ผ์ฐ์ UI ์์๋ฅผ ํฌํจํฉ๋๋ค.
- browser: PWA๊ฐ ํ์ค ๋ธ๋ผ์ฐ์ ํญ์ด๋ ์ฐฝ์์ ์ด๋ฆฌ๋ฉฐ ์ ์ฒด ๋ธ๋ผ์ฐ์ UI๋ฅผ ํ์ํฉ๋๋ค.
๊ฐ ๋ชจ๋๋ฅผ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. fullscreen ๋ชจ๋
fullscreen ๋ชจ๋๋ ๊ฐ์ฅ ๋ชฐ์
๊ฐ ์๋ ๊ฒฝํ์ ์ ๊ณตํ์ฌ PWA๋ฅผ ์ํ ํ๋ฉด ๊ณต๊ฐ์ ๊ทน๋ํํฉ๋๋ค. ์ด๋ ๊ฒ์, ๋น๋์ค ํ๋ ์ด์ด ๋๋ ๋ฐฉํด ์๋ ํ๊ฒฝ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด์์ ์
๋๋ค.
fullscreen ๋ชจ๋๋ฅผ ์ค์ ํ๋ ค๋ฉด ๋งค๋ํ์คํธ์ display ์์ฑ์ "fullscreen"์ผ๋ก ์ค์ ํ๋ฉด ๋ฉ๋๋ค:
{
"name": "๋์ ์ ์ฒด ํ๋ฉด PWA",
"display": "fullscreen",
"start_url": "/",
"icons": [
{
"src": "icon.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
fullscreen ๋ชจ๋ ๊ณ ๋ ค ์ฌํญ:
- ์ฌ์ฉ์ ๊ฒฝํ: PWA๊ฐ ์ ์ฒด ํ๋ฉด ํ๊ฒฝ ๋ด์์ ๋ช ํํ๊ณ ์ง๊ด์ ์ธ ๋ด๋น๊ฒ์ด์ ์ ์ ๊ณตํ๋์ง ํ์ธํ์ธ์. ์ฌ์ฉ์๋ ์ฝ๊ฒ ์ข ๋ฃํ๊ฑฐ๋ ์ด์ ํ๋ฉด์ผ๋ก ๋์๊ฐ ์ ์์ด์ผ ํฉ๋๋ค.
- ์ ๊ทผ์ฑ: ๋ด๋น๊ฒ์ด์ ์ ์ํด ๋ธ๋ผ์ฐ์ UI ์์์ ์์กดํ ์ ์๋ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ๊ณ ๋ คํ์ธ์. PWA ๋ด์ ๋์ฒด ๋ด๋น๊ฒ์ด์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ธ์.
- ํ๋ซํผ ์ง์: ๋๋ฆฌ ์ง์๋์ง๋ง, fullscreen ๋ชจ๋ ๋์์ ๋ธ๋ผ์ฐ์ ๋ฐ ์ด์ ์ฒด์ ์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ฒ ์ ํ ํ ์คํธ๊ฐ ํ์์ ์ ๋๋ค.
- ์ฝํ ์ธ ์ค์ผ์ผ๋ง: fullscreen ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๋ ์ฝํ ์ธ ๊ฐ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ํ๋ฉด ๋น์จ์ ๋ง๊ฒ ์ ๋๋ก ์ค์ผ์ผ๋ง๋๋์ง ํ์ธํ์ธ์.
์์: ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ์ ์ฉ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ ๋ชฐ์
๊ฐ ์๋ fullscreen ๋ชจ๋์ ์ด์ ์ ํฌ๊ฒ ํ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ฐฉํด ์์ด ์ฝํ
์ธ ์ ์ง์คํ ์ ์๋๋ก ํฉ๋๋ค.
2. standalone ๋ชจ๋
standalone ๋ชจ๋๋ ๊ท ํ ์กํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ฌ ๋ธ๋ผ์ฐ์ ์ UI๋ฅผ ์์ ํ ์จ๊ธฐ์ง ์์ผ๋ฉด์ ์ฑ๊ณผ ์ ์ฌํ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. PWA๋ ๋ธ๋ผ์ฐ์ ์ ๋ณ๊ฐ์ ์์ฒด ์ต์์ ์ฐฝ์์ ์คํ๋๋ฉฐ, ์ด์ ์ฒด์ ์ ์ฑ ์คํ๊ธฐ์ ์์ฒด ์ฑ ์์ด์ฝ์ ๊ฐ์ง๋๋ค. ์ด๋ ๋๋ถ๋ถ์ PWA์์ ์ ํธ๋๋ ๋ชจ๋์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
standalone ๋ชจ๋๋ฅผ ์ค์ ํ๋ ค๋ฉด display ์์ฑ์ "standalone"์ผ๋ก ์ค์ ํ์ธ์:
{
"name": "๋์ ๋
๋ฆฝํ PWA",
"display": "standalone",
"start_url": "/",
"icons": [
{
"src": "icon.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
standalone ๋ชจ๋์ ์ด์ :
- ์ฑ๊ณผ ์ ์ฌํ ๊ฒฝํ: ์ผ๋ฐ ์น์ฌ์ดํธ์ ์๊ฐ์ ์ผ๋ก ๊ตฌ๋ณ๋๋ ๊ฒฝํ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ์ฐธ์ฌ๋ฅผ ํฅ์์ํต๋๋ค.
- ํ ํ๋ฉด ํตํฉ: ์ฌ์ฉ์๊ฐ PWA๋ฅผ ํ ํ๋ฉด์ ์ค์นํ์ฌ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค.
- ์คํ๋ผ์ธ ๊ธฐ๋ฅ: ๋ ๋ฆฝํ ๋ชจ๋์ PWA๋ ์๋น์ค ์์ปค๋ฅผ ํ์ฉํ์ฌ ์คํ๋ผ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ ๋ขฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์์: ์ ์ ์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ์์
๋ฏธ๋์ด ํด๋ผ์ด์ธํธ๋ standalone ๋ชจ๋์์ ์ ์๋ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ์ ์ฌํ ์ํํ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
3. minimal-ui ๋ชจ๋
minimal-ui ๋ชจ๋๋ standalone๊ณผ ์ ์ฌํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ ๋ฐ ์๋ก ๊ณ ์นจ ๋ฒํผ๊ณผ ๊ฐ์ ์ต์ํ์ ๋ธ๋ผ์ฐ์ UI ์์๋ฅผ ํฌํจํฉ๋๋ค. ์ด ๋ชจ๋๋ standalone๋ณด๋ค ์ฝ๊ฐ ๋ ๋ชฐ์
์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ์ง๋ง ๋ธ๋ผ์ฐ์ ๋ด๋น๊ฒ์ด์
์ ์์กดํ๋ PWA์ ์ ์ฉํ ์ ์์ต๋๋ค.
minimal-ui ๋ชจ๋๋ฅผ ์ค์ ํ๋ ค๋ฉด display ์์ฑ์ "minimal-ui"๋ก ์ค์ ํ์ธ์:
{
"name": "๋์ ์ต์ UI PWA",
"display": "minimal-ui",
"start_url": "/",
"icons": [
{
"src": "icon.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
minimal-ui ๋ชจ๋์ ์ฌ์ฉ ์ฌ๋ก:
- ๋ธ๋ผ์ฐ์ ๋ด๋น๊ฒ์ด์
์์กด์ฑ: PWA๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฐ ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ํฌ๊ฒ ์์กดํ ๋
minimal-ui๋ ์ฌ์ฉ์์๊ฒ ๋ ์น์ํ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. - ๋ ๊ฑฐ์ ์น ์ฑ ํตํฉ: ๋ ๊ฑฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ PWA๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ฒฝ์ฐ
minimal-ui๋ ์ต์ํ ๋ธ๋ผ์ฐ์ ์ปจํธ๋กค์ ์ ๊ณตํ์ฌ ์ ํ์ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค.
์์: ๋ฌธ์ ํธ์ง ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ๋ณต์กํ ์น ์์์ minimal-ui ๋ชจ๋์ ์ด์ ์ ํ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฐ ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์น์
๊ฐ์ ์ฝ๊ฒ ์ด๋ํ ์ ์๋๋ก ํฉ๋๋ค.
4. browser ๋ชจ๋
browser ๋ชจ๋๋ ๋งค๋ํ์คํธ์ display ์์ฑ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ์ ๊ธฐ๋ณธ ๋์คํ๋ ์ด ๋ชจ๋์
๋๋ค. ์ด ๋ชจ๋์์๋ PWA๊ฐ ํ์ค ๋ธ๋ผ์ฐ์ ํญ์ด๋ ์ฐฝ์์ ์ด๋ฆฌ๋ฉฐ ์ฃผ์ ํ์์ค, ๋ด๋น๊ฒ์ด์
๋ฒํผ, ๋ถ๋งํฌ๋ฅผ ํฌํจํ ์ ์ฒด ๋ธ๋ผ์ฐ์ UI๊ฐ ํ์๋ฉ๋๋ค. ์ด ๋ชจ๋๋ ๋ณธ์ง์ ์ผ๋ก ์ผ๋ฐ ์น์ฌ์ดํธ์ ๋์ผํฉ๋๋ค.
browser ๋ชจ๋๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํ๋ ค๋ฉด display ์์ฑ์ "browser"๋ก ์ค์ ํ์ธ์:
{
"name": "๋์ ๋ธ๋ผ์ฐ์ PWA",
"display": "browser",
"start_url": "/",
"icons": [
{
"src": "icon.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
browser ๋ชจ๋๋ฅผ ์ฌ์ฉํด์ผ ํ ๋:
- ๋จ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์
: ์ฑ๊ณผ ์ ์ฌํ ๊ฒฝํ์ด ํ์ ์๋ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ
browser๋ชจ๋๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค. - ์ ์ง์ ํฅ์: PWA ๊ธฐ๋ฅ์ ์์ ํ ์ง์ํ์ง ์๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์ ๋์ฒด ์๋จ์ผ๋ก
browser๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์: ๊ฐ๋จํ ๋ธ๋ก๊ทธ๋ ์ ์ ์น์ฌ์ดํธ๋ ํน๋ณํ ์ฑ๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ด ํ์ ์์ผ๋ฏ๋ก browser ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ฒด ๋์คํ๋ ์ด ๋ชจ๋ ์ค์ ํ๊ธฐ
๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชจ๋ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํ์ง ์๋๋ค๋ ์ ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์ํ ํ๋ซํผ์์ ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋งค๋ํ์คํธ์ display_override ์์ฑ์ ์ฌ์ฉํ์ฌ ๋์ฒด ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
display_override ์์ฑ์ ์ ํธ๋ ์์ผ๋ก ์ ๋ ฌ๋ ๋์คํ๋ ์ด ๋ชจ๋์ ๋ฐฐ์ด์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ฐฐ์ด์์ ์ง์ํ๋ ์ฒซ ๋ฒ์งธ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ง์ ๋ ๋ชจ๋ ์ค ์ด๋ ๊ฒ๋ ์ง์๋์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ ๋์คํ๋ ์ด ๋ชจ๋(์ผ๋ฐ์ ์ผ๋ก browser)๋ก ๋์ฒด๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, standalone ๋ชจ๋๋ฅผ ์ ํธํ์ง๋ง minimal-ui, ๊ทธ ๋ค์ browser๋ก ๋์ฒดํ๋ ค๋ฉด ๋งค๋ํ์คํธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค:
{
"name": "๋์ฒด ๊ธฐ๋ฅ์ด ์๋ ๋์ PWA",
"display": "standalone",
"display_override": ["standalone", "minimal-ui", "browser"],
"start_url": "/",
"icons": [
{
"src": "icon.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
๊ธฐ๋ณธ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ๋์ด: ์ฃ์ง ์ผ์ด์ค ๋ฐ ํ๋ซํผ ์ฐจ์ด ์ฒ๋ฆฌํ๊ธฐ
ํต์ฌ ๋์คํ๋ ์ด ๋ชจ๋๋ ์๋นํ ์์ค์ ์ ์ด๋ฅผ ์ ๊ณตํ์ง๋ง, ๊ฒฌ๊ณ ํ๊ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค๊ธฐ ์ํด์๋ ์ด๊ฒ์ด ๋ค์ํ ํ๋ซํผ ๋ฐ ์ฃ์ง ์ผ์ด์ค์ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง ์ดํดํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค:
1. ํ๋ซํผ๋ณ ๋งค๋ํ์คํธ
ํน์ ์๋๋ฆฌ์ค์์๋ ์ฌ์ฉ์์ ์ด์ ์ฒด์ (OS)์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฅธ ๊ตฌ์ฑ์ด ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, iOS์ Android์์ ๋ค๋ฅธ ์์ด์ฝ ํฌ๊ธฐ๋ฅผ ์ํ ์ ์์ต๋๋ค. ๋จ์ผ ๋งค๋ํ์คํธ๋ก ์ถฉ๋ถํ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ๊ณ ๋๋ก ๋ง์ถคํ๋ ๊ฒฝํ์ ์ํด์๋ ์กฐ๊ฑด๋ถ ๋งค๋ํ์คํธ ๋ก๋ฉ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ์๋ฒ ์ธก ๋ก์ง์ด๋ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ OS๋ฅผ ๊ฐ์งํ๊ณ ์ ์ ํ ๋งค๋ํ์คํธ ํ์ผ์ ์ ๊ณตํจ์ผ๋ก์จ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ด ๊ฐ์ ธ์ค๋ ๋ณต์ก์ฑ ์ฆ๊ฐ์ ์ ์ํด์ผ ํฉ๋๋ค.
2. ํ๋ฉด ๋ฐฉํฅ ์ฒ๋ฆฌ
PWA๋ ๋งค๋ํ์คํธ์ orientation ์์ฑ์ ์ฌ์ฉํ์ฌ ์ ํธํ๋ ํ๋ฉด ๋ฐฉํฅ์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ก ๋ชจ๋๋ก ๊ณ ์ ํ๋ฉด ๊ฒ์์ด๋ ๋ฏธ๋์ด ์๋น ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ ๊ถ๊ทน์ ์ผ๋ก ์ฅ์น ๋ฐฉํฅ์ ์ ์ดํ๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์. ์ฅ์น์ ์์น์ ๊ด๊ณ์์ด ์ฝํ ์ธ ๊ฐ ์ฝ๊ธฐ ์ฝ๊ณ ๊ธฐ๋ฅ์ ์ผ๋ก ์ ์ง๋๋๋ก PWA๋ฅผ ์ค๊ณํ์ฌ ๋ฐฉํฅ ๋ณ๊ฒฝ์ ์ํํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
3. ์คํ๋์ ํ๋ฉด ์ฌ์ฉ์ ์ ์
PWA๊ฐ ๋ก๋๋๋ ๋์ ์ ์ ํ์๋๋ ์คํ๋์ ํ๋ฉด์ ๊ธ์ ์ ์ธ ์ฒซ์ธ์์ ๋จ๊ธธ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ธ๋๋ ์์ด๋ดํฐํฐ์ ๋ง๊ฒ ์คํ๋์ ํ๋ฉด์ ๋ฐฐ๊ฒฝ์(background_color)๊ณผ ํ
๋ง ์์(theme_color)์ ์ฌ์ฉ์ ์ ์ํ์ธ์.
์ ํํ ์์์ด ์ฑ ์์ด์ฝ๊ณผ ์ถฉ๋ถํ ๋๋น๋ฅผ ์ด๋ฃจ์ด ๊ฐ์์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ๊ทน๋ํํ๋๋ก ํ์ธ์. ๋ค๋ฅธ ์ฅ์น์์ ํ ์คํธํ์ฌ ์คํ๋์ ํ๋ฉด์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๋์ง ํ์ธํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
4. ๋ณด์ ๊ณ ๋ ค ์ฌํญ
PWA๋ ๊ธฐ์กด ์น์ฌ์ดํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํญ์ HTTPS๋ฅผ ํตํด ์ ๊ณต๋์ด์ผ ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ณดํธํ์ฌ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ๋์ฒญ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ๋ํ, ๋ณด์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ PWA ๊ธฐ๋ฅ์ ํต์ฌ ๊ธฐ์ ์ธ ์๋น์ค ์์ปค๋ฅผ ํ์ฑํํ๊ธฐ ์ํ ์ ์ ์กฐ๊ฑด์ ๋๋ค.
์๋ฒ์ SSL/TLS ์ธ์ฆ์๊ฐ ์ ํจํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์. ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ์ํํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ผ๋ก ๋ณด์ ํ๋กํ ์ฝ์ ์ ๋ฐ์ดํธํ์ธ์.
5. ๋ค์ํ ๊ธฐ๊ธฐ ๋ฐ ๋ธ๋ผ์ฐ์ ์์์ ํ ์คํธ
์ ์ธ๊ณ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ์ ๋ค์์ฑ์ ๊ณ ๋ คํ ๋, PWA๊ฐ ๋ชจ๋ ๋์ ํ๋ซํผ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํ ์ฒ ์ ํ ํ ์คํธ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์๋ฎฌ๋ ์ด์ ํ์ธ์.
๊ด๋ฒ์ํ ๋ธ๋ผ์ฐ์ ๋ฐ ์ด์ ์ฒด์ ์์ ํ ์คํธ๋ฅผ ์๋ํํ๊ธฐ ์ํด ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํ ์คํธ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ธ์. ๋ค์ํ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ก๋ถํฐ ํผ๋๋ฐฑ์ ์์งํ์ฌ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ์ธ์.
6. ์ ๊ทผ์ฑ ๋ชจ๋ฒ ์ฌ๋ก
์ ๊ทผ์ฑ์ PWA๋ฅผ ํฌํจํ ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํต์ฌ์ ์ธ ๊ณ ๋ ค ์ฌํญ์ด์ด์ผ ํฉ๋๋ค. ์น ์ ๊ทผ์ฑ ๊ฐ์ด๋๋ผ์ธ(WCAG)์ ์ค์ํ์ฌ ์ฅ์ ๊ฐ ์๋ ๊ฐ์ธ๋ PWA๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์ธ์. ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ๊ณ , ์๋งจํฑ HTML ์์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ถฉ๋ถํ ์์ ๋๋น๋ฅผ ๋ณด์ฅํ์ธ์.
ํ๋ฉด ๋ฆฌ๋์ ๊ฐ์ ๋ณด์กฐ ๊ธฐ์ ๋ก PWA๋ฅผ ํ ์คํธํ์ฌ ์ ๊ทผ์ฑ ์ฅ๋ฒฝ์ ์๋ณํ๊ณ ํด๊ฒฐํ์ธ์. fullscreen ๋ชจ๋์์๋ ๋์ฒด ๋ด๋น๊ฒ์ด์ ๋ฐฉ๋ฒ์ด ์ ๊ณต๋๋๋ก ํ์ธ์.
์ ์ธ๊ณ์ ์ค์ ์ฌ๋ก
๋ค์ํ ํ์ฌ๋ค์ด ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๊ธฐ ์ํด PWA ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์๋์ง ์ค์ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ์คํ๋ฒ
์ค (๊ธ๋ก๋ฒ): ์คํ๋ฒ
์ค PWA๋
standalone๋ชจ๋๋ฅผ ํ์ฉํ์ฌ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ์ ์ฌํ ๊ฐ์ํ๋ ์ฃผ๋ฌธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ ์ํ๊ฒ ์ฃผ๋ฌธํ๊ณ ๋ก์ดํฐ ํฌ์ธํธ๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. - ํธ์ํฐ ๋ผ์ดํธ (๊ธ๋ก๋ฒ): ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ์ํด ์ค๊ณ๋ ํธ์ํฐ ๋ผ์ดํธ๋
standalone๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ด๊ณ ๊ฐ๋ฒผ์ด ์์ ๋ฏธ๋์ด ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋์ญํญ์ด ์ ํ๋ ์ง์ญ์ ์ฌ์ฉ์๋ค์ด ์ฐ๊ฒฐ์ ์ ์งํ ์ ์์ต๋๋ค. - ํ๋ฆฝ์นดํธ ๋ผ์ดํธ (์ธ๋): ์ ์ ์๊ฑฐ๋ PWA์ธ ํ๋ฆฝ์นดํธ ๋ผ์ดํธ๋
standalone๋ชจ๋๋ฅผ ํ์ฉํ์ฌ ์ธ๋์ ์ฌ์ฉ์๋ค์๊ฒ ๋ชจ๋ฐ์ผ ์ฐ์ ์ผํ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ตฌํ ๊ธฐ๊ธฐ์ ๋๋ฆฐ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๊ฐ์ง ์ฌ์ฉ์๋ค์ด ์ฝ๊ฒ ์ ํ์ ๊ฒ์ํ๊ณ ๊ตฌ๋งคํ ์ ์์ต๋๋ค. - ์๋ฆฌ์ต์คํ๋ ์ค (์ค๊ตญ, ๊ธ๋ก๋ฒ): ์๋ฆฌ์ต์คํ๋ ์ค์ PWA๋ ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์๋น์ค ์์ปค๋ฅผ ํ์ฉํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก ๋ ๋น ๋ฅธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์ค์ฉ์ ์ธ ํต์ฐฐ๋ ฅ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
PWA ๋งค๋ํ์คํธ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ค๋ฉด ๋ค์์ ์ค์ฉ์ ์ธ ํต์ฐฐ๋ ฅ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ธ์:
- ์ฌ์ฉ์ ๊ฒฝํ ์ฐ์ : PWA์ ๋ชฉ์ ๊ณผ ๋์ ๊ณ ๊ฐ์๊ฒ ๊ฐ์ฅ ์ ํฉํ ๋์คํ๋ ์ด ๋ชจ๋๋ฅผ ์ ํํ์ธ์.
- ๋ช
ํํ ๋ด๋น๊ฒ์ด์
์ ๊ณต: PWA ๋ด์์, ํนํ
fullscreen๋ชจ๋์์ ์ง๊ด์ ์ธ ๋ด๋น๊ฒ์ด์ ์ ๋ณด์ฅํ์ธ์. - ์ฒ ์ ํ ํ ์คํธ: ๋ค์ํ ๋ธ๋ผ์ฐ์ , ๊ธฐ๊ธฐ ๋ฐ ์ด์ ์ฒด์ ์์ PWA๋ฅผ ํ ์คํธํ์ธ์.
- ๋์ฒด ๋ฉ์ปค๋์ฆ ๊ตฌํ:
display_override๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ซํผ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํ์ธ์. - ์ฑ๋ฅ ์ต์ ํ: ๋ก๋ฉ ์๊ฐ์ ์ต์ํํ๊ณ ์คํ๋ผ์ธ ์ฌ์ฉ์ ์ํด PWA๋ฅผ ์ต์ ํํ์ธ์.
- ์ฑ ์ค์น ๋ฐฐ๋ ๊ณ ๋ ค: ์ฑ ์ค์น ๋ฐฐ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ PWA๋ฅผ ํ ํ๋ฉด์ ์ค์นํ๋๋ก ์ ๋ํ์ธ์. ์ด๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ค๋ฉด ๋งค๋ํ์คํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ์ธ์.
- ์ ๊ธฐ์ ์ธ ๋งค๋ํ์คํธ ์ ๋ฐ์ดํธ: ๋งค๋ํ์คํธ ํ์ผ์ ์ต์ ์ฌ์๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ก ์ต์ ์ํ๋ก ์ ์งํ์ธ์.
- ์ฌ์ฉ์ ํ๋ ๋ถ์: ์ฌ์ฉ์๊ฐ ๋ค์ํ ๋์คํ๋ ์ด ๋ชจ๋์์ PWA์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ถ์ ํ์ฌ ๊ฐ์ ์์ญ์ ์๋ณํ์ธ์.
๊ฒฐ๋ก
PWA ๋งค๋ํ์คํธ ๋์คํ๋ ์ด ๋ชจ๋ ์ค์ ์ ๋ง์คํฐํ๋ ๊ฒ์ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ฐ ๋์คํ๋ ์ด ์ต์ ์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ํ๋ซํผ๋ณ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํจ์ผ๋ก์จ, ๋ค์ํ ์ฌ์ฉ์ ์๊ตฌ์ ๋ง๊ฒ PWA๋ฅผ ์ต์ ํํ๊ณ ์ง์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๊ณ ์ฑ๊ณผ ์ ์ฌํ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ฌ์ฉ์ ๊ฒฝํ์ ์ฐ์ ์ํ๊ณ , ๋ค์ํ ํ๋ซํผ์์ ์ฒ ์ ํ ํ ์คํธํ๋ฉฐ, ์ฌ์ฉ์ ํผ๋๋ฐฑ๊ณผ ์งํํ๋ ์น ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก PWA๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ์ ๊ธฐ์ตํ์ธ์. ์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด PWA์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ฐ์ํ ์น ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.