ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ๋ฐํํ์ธ์! ๋ฐ๋ก ๊ฐ๊ธฐ, ๊ณต์ ๋์, ํ์ผ/ํ๋กํ ์ฝ ํธ๋ค๋ฌ์ ๊ฐ์ ๊ณ ๊ธ PWA ๋งค๋ํ์คํธ ๊ธฐ๋ฅ์ ์ฌ์ธต์ ์ผ๋ก ์์๋ณด๊ณ , ์น ์ฑ์ ๊ธ๋ก๋ฒ ์ด์ ์ฒด์ ์ ์ํํ๊ฒ ํตํฉํ์ฌ ์ง์ ํ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ํ์ธํ์ธ์.
ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ ๋งค๋ํ์คํธ: ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ ๋ฐ OS ํตํฉ
์ ์ ๋ ์ํธ ์ฐ๊ฒฐ๋๋ ์ธ์์์ ์ฌ์ฉ์๋ค์ ๋ชจ๋ ๊ธฐ๊ธฐ์์ ์ํํ๊ณ ์์ ์ ์ด๋ฉฐ ๋งค๋ ฅ์ ์ธ ๊ฒฝํ์ ๊ธฐ๋ํฉ๋๋ค. ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA)์ ์ด๋ฌํ ์งํ์ ์ต์ ์ ์ ์์ ๊ธฐ์กด ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ๋๋ ๋ฐ์คํฌํฑ ์ฑ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํฉ๋๋ค. PWA ๊ฒฝํ์ ์ด์์ ์น ์ฑ ๋งค๋ํ์คํธ(Web App Manifest)์ ๋๋ค. ์ด๋ ์ฌ์ฉ์์ ๊ธฐ๊ธฐ์ ์ค์น๋ ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ด์ ์ฒด์ (OS)์ ์๋ ค์ฃผ๋ ๊ฐ๋จํ JSON ํ์ผ์ ๋๋ค.
๋ง์ ๊ฐ๋ฐ์๋ค์ด name, start_url, icons์ ๊ฐ์ ๋งค๋ํ์คํธ์ ๊ธฐ๋ณธ ํ๋์ ์ต์ํ์ง๋ง, ์ฌ์ธต์ ์ธ OS ํตํฉ์ ์ํ PWA์ ์ง์ ํ ํ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์์ต๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ ์ด๋ฌํ ์ต์ฒจ๋จ ๊ธฐ๋ฅ๋ค์ ํ๊ตฌํ์ฌ, PWA๊ฐ ๋จ์ํ ์น์ฌ์ดํธ๋ฅผ ๋์ด ๋ค์ํ ์ด์ ์ฒด์ ์์ ์ผ๊ธ ์๋ฏผ์ผ๋ก ๊ฒฉ์๋์ด ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๊ณต๊ฐ๋๋ฅผ ํ์ฑํ๋ ์ฑ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค ๊ฒ์
๋๋ค.
PWA ๋งค๋ํ์คํธ์ ๊ธฐ๋ณธ ์ญํ
๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ธฐ ์ ์ ์น ์ฑ ๋งค๋ํ์คํธ์ ํต์ฌ ๋ชฉ์ ์ ๊ฐ๋ตํ ๋์ง์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ ์ค์น ์ PWA์ ์ ์ฒด์ฑ, ์ธ๊ด ๋ฐ ๋์์ ์ ์ํ๋ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ์ด๊ฒ์ด ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๋ "ํ ํ๋ฉด์ ์ถ๊ฐ" ๋๋ "์ค์น" ํ๋กฌํํธ๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, OS๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ณธ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
name๋ฐshort_name: ์คํ๋์ ํ๋ฉด, ์ฑ ๋ชฉ๋ก ๋ฐ ํ ํ๋ฉด์ ํ์๋๋ PWA์ ์ ์ฒด ์ด๋ฆ๊ณผ ์ฝ์นญ์ ๋๋ค. ๋ชจ๋ ์ธ์ด์ ๋ํด ๋ช ํํ๊ณ ๊ฐ๊ฒฐํด์ผ ํฉ๋๋ค.start_url: ์์ด์ฝ์์ PWA๋ฅผ ์์ํ ๋ ๋ก๋๋๋ URL์ ๋๋ค. ์ถ์ ๋งค๊ฐ๋ณ์์ ํจ๊ป ์ฌ์ฉ์๋ฅผ ์ฌ๋ฐ๋ฅธ ์์ ์ง์ ์ผ๋ก ์๋ดํ๋ ๋ฐ ์ค์ํฉ๋๋ค.display: PWA๊ฐ ํ์๋๋ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค(์: ๋ธ๋ผ์ฐ์ UI๊ฐ ์๋ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ํstandalone, ๋ชฐ์ ํ ๊ฒ์์ ์ํfullscreen,minimal-ui๋๋browser).icons: ๋ค์ํ ์ปจํ ์คํธ(์: ํ ํ๋ฉด, ์คํ๋์ ํ๋ฉด, ์๋ฆผ ์์ด์ฝ)์ ๋ํ ๋ค์ํ ์์ด์ฝ ํฌ๊ธฐ์ ํ์์ ์ง์ ํ๋ ์ด๋ฏธ์ง ๊ฐ์ฒด ๋ฐฐ์ด์ ๋๋ค. ๋ชจ๋ ๊ธฐ๊ธฐ์์ ๋ธ๋๋ ์ธ์ง๋๋ฅผ ์ํด ํ์์ ์ ๋๋ค.theme_color: ์ ํ๋ฆฌ์ผ์ด์ ํ ๋ง์ ๊ธฐ๋ณธ ์์์ผ๋ก, ์ข ์ข ๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์ด๋ OS ์ํ ํ์์ค์ ์ํฅ์ ์ค๋๋ค.background_color: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ก๋๋๊ธฐ ์ ์ ์คํ๋์ ํ๋ฉด์ ํ์๋๋ ๋ฐฐ๊ฒฝ์์ผ๋ก, ๋ถ๋๋ฌ์ด ์ ํ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ณธ ์ฌํญ๋ค์ PWA๊ฐ ์ค์น ๊ฐ๋ฅํ๊ณ ์ ๋ฌธ์ ์ธ ์ธ๊ด์ ๊ฐ์ถ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ PWA๋ฅผ ์ง์ ์ผ๋ก ์ฐจ๋ณํํ๊ณ ํ๋ถํ๊ณ ํตํฉ๋ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ฉด ์ด๋ฌํ ๊ธฐ๋ณธ์ ๋์ด์ ํ์ํด์ผ ํฉ๋๋ค.
๋ ๊น์ OS ํตํฉ์ ์ํ ๊ณ ๊ธ ๋งค๋ํ์คํธ ๊ธฐ๋ฅ
ํ๋์ ๋ธ๋ผ์ฐ์ ์ ์ด์ ์ฒด์ ๋ ์ ํต์ ์ผ๋ก ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์๋ง ๊ตญํ๋์๋ ๊ธฐ๋ฅ๋ค๋ก PWA๋ฅผ ๊ฐํํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๋ค์ ๋งค๋ํ์คํธ ์์ฑ๋ค์ ์ด๋ฌํ ๋ ๊น์ ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํต์ฌ ์์์ ๋๋ค.
1. display ๋ชจ๋: ๊ธฐ๋ณธ ๋ทฐํฌํธ๋ฅผ ๋์ด์
standalone์ ์ข
์ข
์ฑ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ํ ๊ธฐ๋ณธ ์ ํ์ด์ง๋ง, ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ display์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํด ๊ฐ ๋ชจ๋์ ์๋ฏธ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค:
standalone: ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ํ์ ๋๋ค. PWA๋ ์์ฒด ์ฐฝ์์ ์คํ๋๋ฉฐ ์ฃผ์ ํ์์ค ๋ฐ ํ์ ๋ฒํผ๊ณผ ๊ฐ์ ๋ธ๋ผ์ฐ์ UI ์์๋ฅผ ์จ๊ฒจ ๊น๋ํ๊ณ ์ง์ค๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์์ฐ์ฑ ์ฑ, ์์ ํ๋ซํผ ๋ฐ ์ ์ ์๊ฑฐ๋์ ์ด์์ ์ ๋๋ค.fullscreen: ์ํ ํ์์ค์ ํฌํจํ ์ ์ฒด ํ๋ฉด์ ์ฐจ์งํฉ๋๋ค. ๊ฒ์, ๋ฏธ๋์ด ํ๋ ์ด์ด ๋๋ ๋ชจ๋ ํฝ์ ์ด ์ค์ํ ์ธํฐ๋ํฐ๋ธ ์๋ฎฌ๋ ์ด์ ๊ณผ ๊ฐ์ ๋ชฐ์ ํ ๊ฒฝํ์ ์ ํฉํฉ๋๋ค.minimal-ui: ๋ธ๋ผ์ฐ์ ์ ์ ์ฌํ ๊ฒฝํ์ ์ ๊ณตํ์ง๋ง ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ด๋ ์๋ก ๊ณ ์นจ๊ณผ ๊ฐ์ ์ต์ํ์ ํ์ ์ปจํธ๋กค๋ง ์ ๊ณตํฉ๋๋ค. ์ผ๋ถ ๋ธ๋ผ์ฐ์ ์ปจํ ์คํธ๋ฅผ ์ ์งํ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์ธ๋ถ ๋งํฌ๋ก ์ฝ๊ฒ ์ด๋ํ ์ ์๋๋ก ํ๋ฉด์๋ ์ฑ๊ณผ ๊ฐ์ ์ฐฝ์ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ display ๋ชจ๋๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ OS์ PWA์ ํตํฉ์ ์ด๋ป๊ฒ ์ธ์ํ๋์ง์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฉฐ, ๋ค์ํ ๊ธฐ๊ธฐ ์ ํ๊ณผ ๋ฌธํ์ ๊ฑธ์ณ ์ฌ์ฉ์๊ฐ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ํฅ์ ์ค๋๋ค.
2. shortcuts: ํ ํ๋ฉด์์์ ๋น ๋ฅธ ์์
์ ๊ทผ
shortcuts ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ํ ํ๋ฉด, ๋ฐ์คํฌํฑ ๋๋ ์์
ํ์์ค์ ์๋ PWA ์์ด์ฝ์์ ์ง์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋ ์ผ๋ฐ์ ์ธ ์์
๋ชฉ๋ก์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ฐธ์ฌ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ์ ํฅ์์ํค๋ ๋ฐ ํ๊ธฐ์ ์ธ ๋ณํ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๊ตฌ๋ฌธ ์์ :
"shortcuts": [
{
"name": "New Post",
"short_name": "Post",
"description": "Create a new blog post",
"url": "/new-post?source=pwa-shortcut",
"icons": [{ "src": "/images/new-post-icon-192.png", "sizes": "192x192" }]
},
{
"name": "My Profile",
"short_name": "Profile",
"description": "View your user profile",
"url": "/profile?source=pwa-shortcut",
"icons": [{ "src": "/images/profile-icon-192.png", "sizes": "192x192" }]
}
]
๊ธ๋ก๋ฒ ์ ์ฉ ์ฌ๋ก:
- ๊ตญ์ ์ ์ ์๊ฑฐ๋ PWA๋ "์ฅ๋ฐ๊ตฌ๋ ๋ณด๊ธฐ", "์ฃผ๋ฌธ ์ถ์ " ๋๋ "๋ ์ฐพ์๋ณด๊ธฐ"์ ๊ฐ์ ๋ฐ๋ก ๊ฐ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ๋ด์ค ์์ง๊ธฐ PWA๋ "์ต์ ํค๋๋ผ์ธ", "ํ ํฝ ๋ฐ๊ฒฌ" ๋๋ "๋ด ํผ๋"์ ๊ฐ์ ๋ฐ๋ก ๊ฐ๊ธฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ํ์ ๋ฌธ์ ํธ์ง๊ธฐ๋ "์ ๋ฌธ์" ๋๋ "์ต๊ทผ ํ์ผ"์ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ฐ๋ก ๊ฐ๊ธฐ๋ ์ฌ์ฉ์๊ฐ PWA ์์ด์ฝ์ ๊ธธ๊ฒ ๋๋ฅด๊ฑฐ๋(๋ชจ๋ฐ์ผ) ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ๋ฉด(๋ฐ์คํฌํฑ) ์ปจํ ์คํธ ๋ฉ๋ด ํญ๋ชฉ์ผ๋ก ๋ํ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ธ ์์ ์ ์ํํ๋ ๋จ๊ณ๋ฅผ ํฌ๊ฒ ์ค์ฌ ์ฌ์ฉ์ ์์น์ ๊ด๊ณ์์ด PWA๊ฐ OS ์ํฌํ๋ก์ฐ์ ๋ ๋ฐ์์ ์ด๊ณ ๊น์ด ํตํฉ๋ ๋๋์ ์ค๋๋ค.
3. share_target: ๊ธ๋ก๋ฒ ๊ณต์ ๋์์ด ๋๊ธฐ
share_target ์์ฑ์ PWA๋ฅผ OS์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ์น ํ์ด์ง์์ ๊ณต์ ๋ ์ฝํ
์ธ ์ ์ ์ฌ์ ์์ ์๋ก ๋ณํํฉ๋๋ค. ์ด๋ ์ฝํ
์ธ ์ค์ฌ PWA์ ๋งค์ฐ ๊ฐ๋ ฅํ๋ฉฐ, iOS, Android, Windows ๋ฐ macOS์ ๋ค์ดํฐ๋ธ ๊ณต์ ๋ฉ์ปค๋์ฆ๊ณผ ์ํํ๊ฒ ํตํฉํ ์ ์๊ฒ ํด์ค๋๋ค.
ํ ์คํธ/URL ๊ณต์ ๊ตฌ๋ฌธ ์์ :
"share_target": {
"action": "/share-target/",
"method": "POST",
"enctype": "application/x-www-form-urlencoded",
"params": {
"title": "title",
"text": "text",
"url": "url"
}
}
์๋ ๋ฐฉ์:
์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ฑ(์: ๊ฐค๋ฌ๋ฆฌ์ ์ฌ์ง, ๋ธ๋ผ์ฐ์ ์ ๋งํฌ, ๋
ธํธ ์ฑ์ ํ
์คํธ)์์ ์ฝํ
์ธ ๋ฅผ ๊ณต์ ํ ๋, PWA๊ฐ OS์ ๋ค์ดํฐ๋ธ ๊ณต์ ์ํธ์ ๋ค๋ฅธ ์ค์น๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํจ๊ป ๋ํ๋ ์ ์์ต๋๋ค. ์ ํ ์, PWA๋ ์ง์ ๋ action URL์์ ์์๋๋ฉฐ(์คํ ์ค์ด ์๋ ๊ฒฝ์ฐ), ๊ณต์ ๋ ๋ฐ์ดํฐ๋ ๋งค๊ฐ๋ณ์(GET ๋๋ POST๋ฅผ ํตํด)๋ก ์ ๋ฌ๋ฉ๋๋ค. PWA์ ์๋น์ค ์์ปค๋ ์ด๋ฅผ ๊ฐ๋ก์ฑ ์คํ๋ผ์ธ์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์๋ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ฌ์ฉ ์ฌ๋ก:
- ๊ธ๋ก๋ฒ ์์ ๋ฏธ๋์ด PWA: ์ฌ์ฉ์๋ ๋ชจ๋ ์ฑ์์ ์ฌ์ง, ๋น๋์ค ๋๋ ๊ธฐ์ฌ๋ฅผ ์์ ์ ํผ๋์ ์ง์ ๊ณต์ ํ ์ ์์ต๋๋ค.
- ๋ค๊ตญ์ด ๋ฉ๋ชจ PWA: ์ฌ์ฉ์๋ ๋ฌธ์๋ ์น์ฌ์ดํธ์ ํ ์คํธ ์กฐ๊ฐ์ ๊ณต์ ํ์ฌ ๋น ๋ฅด๊ฒ ์ ์ฅํ ์ ์์ต๋๋ค.
- ๊ตญ์ ๋ถ๋งํฌ PWA: ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ์ URL์ ๊ณต์ ํ์ฌ ์์ ์ ํ๋ ์ด์ ์ปฌ๋ ์ ์ ์ ์ฅํ ์ ์์ต๋๋ค.
share_target ๊ธฐ๋ฅ์ PWA๋ฅผ ์ฝํ
์ธ ์ ์ค์ ํ๋ธ๋ก ๋ง๋ค์ด ๊ธ๋ก๋ฒ ์ปดํจํ
์ํ๊ณ ๋ด์์ ๊ทธ ์ ์ฉ์ฑ๊ณผ ์กด์ฌ๊ฐ์ ํฅ์์ํต๋๋ค.
4. scope: ์ฑ์ ๊ฒฝ๊ณ ์ ์
scope ์์ฑ์ PWA์ ํ์ ๋ฒ์๋ฅผ ์ ์ํฉ๋๋ค. ์ด ๋ฒ์ ๋ด์ ๋ชจ๋ URL์ PWA์ ์ผ๋ถ๋ก ์ฒ๋ฆฌ๋์ด ๋
๋ฆฝ ์คํํ ์ฐฝ์์ ์ด๋ฆฝ๋๋ค. ๋ฒ์ ๋ฐ์ URL์ ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ฐ ๋ธ๋ผ์ฐ์ ํญ์์ ์ด๋ฆฝ๋๋ค. ์ด๋ ์ฑ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ์งํ๊ณ ์ผ๊ด๋ ๋ธ๋๋ฉ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, start_url์ด /์ธ ๊ฒฝ์ฐ scope๋ /๊ฐ ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ๋๋ฉ์ธ์ ๋ชจ๋ ํ์ด์ง๊ฐ PWA ์ฐฝ ๋ด์์ ์ด๋ฆผ์ ์๋ฏธํฉ๋๋ค. PWA๊ฐ ํน์ ๋์๋ณด๋์ ๊ฐ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์
์ธ ๊ฒฝ์ฐ ๋ฒ์๋ /dashboard/๊ฐ ๋ ์ ์์ต๋๋ค.
scope๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ํ๋ฉด ์ฌ์ฉ์๊ฐ PWA์ ์๋๋ ๊ฒฝ๊ณ๋ฅผ ๋ฒ์ด๋ ์ ์ฒด ๋ธ๋ผ์ฐ์ ๊ฒฝํ์ผ๋ก ์ฐ์ฐํ ์ด๋ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด๋ ์ด์ง๊ฐ์ ์ค์ด๊ณ ์ฑ๊ณผ ๊ฐ์ ๋๋์ ์ ์งํ๋ ๋ฐ ์ค์ํ๋ฉฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณดํธ์ ์ผ๋ก ์ค์ํฉ๋๋ค.
5. url_handlers (์คํ์ ๊ธฐ๋ฅ): OS ์์ค์์ URL ๊ฐ๋ก์ฑ๊ธฐ
url_handlers ์์ฑ์ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ์์ ํ๋๊ทธ ๋ค์ ์จ๊ฒจ์ง ์คํ์ ๊ธฐ๋ฅ์ผ๋ก, OS ํตํฉ์์ ์๋นํ ๋์ฝ์ ๋ํ๋
๋๋ค. PWA๊ฐ ํน์ URL ํจํด์ ๋ํ ํธ๋ค๋ฌ๋ก ์์ ์ ๋ฑ๋กํ ์ ์๊ฒ ํ์ฌ, ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ธ๋ถ(์: ์ด๋ฉ์ผ, ์ฑํ
์ ํ๋ฆฌ์ผ์ด์
๋๋ ๋ค๋ฅธ ๋ค์ดํฐ๋ธ ์ฑ)์์ ์ผ์นํ๋ ๋งํฌ๋ฅผ ํด๋ฆญํ ๋ PWA๋ฅผ ์ง์ ์คํํ ์ ์๊ฒ ํฉ๋๋ค.
๊ตฌ๋ฌธ ์์ :
"url_handlers": [
{
"origin": "https://your-domain.com",
"paths": ["/products/*", "/categories/*"]
}
]
์ด๋ฅผ ํตํด PWA๋ https://your-domain.com/products/item-id์ ๊ฐ์ ๋งํฌ๋ฅผ ๊ฐ๋ก์ฑ, ํ์ค ๋ธ๋ผ์ฐ์ ํญ์์ ์ฌ๋ ๋์ PWA๋ฅผ ํด๋น ํน์ ์ฝํ
์ธ ๋ก ์ง์ ์คํํฉ๋๋ค. ์ด๋ ๋ค์ดํฐ๋ธ ์ฑ์ด ์ฌ์ฉ์ ์ง์ URI ์คํด(์: youtube://, spotify://)์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ์ง๋ง ํ์ค ์น URL์ ์ฌ์ฉํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
๊ธ๋ก๋ฒ ํฐ์ผํ PWA๋ฅผ ์์ํด ๋ณด์ญ์์ค. ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฆฌ๋ ๋งํฌ๊ฐ ํฌํจ๋ ์ด๋ฉ์ผ์ ๋ฐ๋ ๋์ , ๋งํฌ๊ฐ PWA๋ฅผ ์ง์ ์คํํ์ฌ ํฐ์ผ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๋๋ ๋ฉ์์ง ์ฑ์์ ๊ณต์ ๋ ๋งํฌ์์ ํน์ ๊ธฐ์ฌ๋ฅผ ์ง์ ์ฌ๋ ๋ด์ค PWA๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ์ธ๋ถ ์ปจํ ์คํธ์์ PWA๋ก์ ์ง์ ์ผ๋ก ์ํํ ์ ํ์ ์ ๊ณตํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์ ํธ์์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
6. protocol_handlers (์คํ์ ๊ธฐ๋ฅ): ์ฌ์ฉ์ ์ง์ ํ๋กํ ์ฝ ํตํฉ
url_handlers์ ์ ์ฌํ๊ฒ, protocol_handlers๋ PWA๊ฐ ์ฌ์ฉ์ ์ง์ ํ๋กํ ์ฝ(์: web+myprotocol://)์ ๋ฑ๋กํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ํ์ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ์ํ๊ณ ๋ด์์ ๊ณ ์ ํ ํตํฉ ์ง์ ์ ์ค์ ํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
๊ตฌ๋ฌธ ์์ :
"protocol_handlers": [
{
"protocol": "web+invoice",
"url": "/invoice?id=%s"
}
]
๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ์น์ฌ์ดํธ๊ฐ web+invoice://12345์ ๊ฐ์ ๋งํฌ๋ฅผ ์์ฑํ๋ฉด, PWA๊ฐ ์ด๋ฆฌ๊ณ ์ก์ฅ ๋ฒํธ 12345๋ฅผ ํ์ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ์
์์คํ
, ์ ๋ฌธ ๋๊ตฌ ๋๋ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ์ ๊น์ ํตํฉ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค.
๊ธ๋ก๋ฒ ์ ์ฌ๋ ฅ:
๊ธ๋ก๋ฒ ๊ธ์ต ์ถ์ PWA๋ ํน์ ์์ฐ ์์ธ ํ์ด์ง๋ฅผ ์์ํ๊ธฐ ์ํด web+asset://๊ณผ ๊ฐ์ ํ๋กํ ์ฝ์ ๋ฑ๋กํ ์ ์์ต๋๋ค. ๊ตญ์ ๊ต์ก ํ๋ซํผ์ web+lesson://์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ PWA๋ฅผ ์ง์ ํ ์ฌ์ฉ์ ์ง์ OS ์์ค ์ํธ ์์ฉ์ ์์ญ์ผ๋ก ๋ฐ์ด ๋ฃ์ต๋๋ค.
7. file_handlers (์คํ์ ๊ธฐ๋ฅ): PWA๋ก ๋ก์ปฌ ํ์ผ ์ด๊ธฐ
file_handlers ์์ฑ์ PWA๊ฐ ์ฌ์ฉ์์ OS์์ ํน์ ํ์ผ ํ์์ ๋ํ ํธ๋ค๋ฌ๋ก ์์ ์ ๋ฑ๋กํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ก์ปฌ ํ์ผ ๊ด๋ฆฌ๊ฐ ํฌํจ๋ ์์ฐ์ฑ ๋ฐ ์ฐฝ์์ ์์
์ PWA๋ฅผ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ธฐ๋
๋น์ ์ธ ๋จ๊ณ์
๋๋ค.
๊ตฌ๋ฌธ ์์ :
"file_handlers": [
{
"action": "/open-file",
"accept": {
"text/plain": [".txt", ".md"],
"image/png": [".png"]
},
"icons": [
{ "src": "/images/txt-icon-192.png", "sizes": "192x192" }
]
}
]
์๋ ๋ฐฉ์:
๋ฑ๋ก๋๋ฉด, ์ฌ์ฉ์๊ฐ ํ์ผ ํ์๊ธฐ(์: Windows ํ์๊ธฐ, macOS Finder)์์ .txt ๋๋ .png ํ์ผ์ ์ด๋ ค๊ณ ํ ๋ PWA๊ฐ ํด๋น ํ์ผ์ ์ด ์ ์๋ ์ต์
์ผ๋ก ๋ํ๋ ์ ์์ต๋๋ค. ์ ํํ๋ฉด PWA๊ฐ ์์๋๊ณ ํ์ผ ๋ด์ฉ์ File System Access API๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์น ๊ธฐ๋ฐ ์ด๋ฏธ์ง ํธ์ง๊ธฐ, ํ
์คํธ ํธ์ง๊ธฐ, ๋ฌธ์ ๋ทฐ์ด ๋ฑ์ด ๋ก์ปฌ ํ์ผ๊ณผ ์ง์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ ์ฉ ์ฌ๋ก:
- ๋ค๊ตญ์ด ํ
์คํธ ํธ์ง๊ธฐ PWA: ์ ์ธ๊ณ ์ฌ์ฉ์๋ ๋ก์ปฌ
.txt๋๋.mdํ์ผ์ PWA๋ก ์ง์ ์ด์ด ํธ์งํ๊ฑฐ๋ ๋ณผ ์ ์์ต๋๋ค. - ๊ธ๋ก๋ฒ ๋์์ธ ํ์
PWA: ๋น ๋ฅธ ํธ์ง์ด๋ ๊ฒํ ๋ฅผ ์ํด
.svg๋๋.pngํ์ผ์ ์ฝ๋๋ค. - ๋ฐ์ดํฐ ์๊ฐํ PWA: ๋ถ์์ ์ํด ๋ก์ปฌ
.csv๋๋.jsonํ์ผ์ ๋ก๋ํฉ๋๋ค.
file_handlers๋ ํนํ ๋ฐ์คํฌํฑ ์ฌ์ฉ์์๊ฒ PWA์ ์ ์ฉ์ฑ์ ํฌ๊ฒ ํฅ์์์ผ ์ค์น๋ ๋ค์ดํฐ๋ธ ์ํํธ์จ์ด์ฒ๋ผ ๋๊ปด์ง๊ฒ ๋ง๋ญ๋๋ค.
8. related_applications ๋ฐ prefer_related_applications: ์ฌ์ฉ์ ์ ํ ์๋ด
PWA์ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์
(์: Google Play, Apple App Store)์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ, related_applications ๋ฐฐ์ด์ ํตํด ๋ธ๋ผ์ฐ์ ์ ๋ค์ดํฐ๋ธ ๋ฒ์ ์ ๋ํด ์๋ฆด ์ ์์ต๋๋ค. prefer_related_applications: true ํ๋๊ทธ๋ ์ฌ์ฉ์๊ฐ ๋ค์ดํฐ๋ธ ์ฑ์ ์ค์นํ ๊ฒฝ์ฐ PWA ๋์ ํด๋น ์ฑ์ ์ด๋๋ก ์ ๋ํ๊ฑฐ๋, ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ค์ดํฐ๋ธ ์ฑ ์ค์น๋ฅผ ๊ถ์ฅํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ ํธ๋ฅผ ๋ณด๋
๋๋ค.
๊ตฌ๋ฌธ ์์ :
"related_applications": [
{
"platform": "play",
"url": "https://play.google.com/store/apps/details?id=com.example.app",
"id": "com.example.app"
},
{
"platform": "itunes",
"url": "https://itunes.apple.com/app/example-app/id123456789"
}
],
"prefer_related_applications": true
์ด๋ ๊ธฐ์กด ๋ค์ดํฐ๋ธ ์ฑ์ ๋ณด์ ํ ๋น์ฆ๋์ค์ ์ ์ฉํ๋ฉฐ, ์ผ๊ด๋ ๋ธ๋๋ ๊ฒฝํ์ ๋ณด์ฅํ๊ณ ์ฌ์ฉ์๋ฅผ ์ ํธํ๋ ํ๋ซํผ์ผ๋ก ์๋ดํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ฒ์ ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ฌ์ ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ฐฐํฌ๋ ์๋น์ค์์ ํํ ๋ณผ ์ ์๋ ์๋๋ฆฌ์ค์ ๋๋ค.
9. id: PWA๋ฅผ ์ํ ์์ ์ ์ธ ์๋ณ์
id ์์ฑ์ PWA์ ๋ํ ์์ ์ ์ด๊ณ ๊ณ ์ ํ ์๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ข
์ข
start_url๋ก ๊ธฐ๋ณธ ์ค์ ๋์ง๋ง, ํนํ start_url์ด ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฒฝ์ฐ ๋ฏธ๋๋ฅผ ๋๋นํ์ฌ id๋ฅผ ๋ช
์์ ์ผ๋ก ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ํ URL ๋ณ๊ฒฝ์ ๊ด๊ณ์์ด ์ค์น๋ PWA ์ธ์คํด์ค๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, start_url์ /en/ ๋๋ /fr/์ ๊ฐ์ ๋ก์ผ์ผ์ด ํฌํจ๋์ด ์์ง๋ง ๋ชจ๋ ๋ก์ผ์ผ์์ PWA๋ฅผ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๊ฐ์ฃผํ๋ ค๋ ๊ฒฝ์ฐ, "/" ๋๋ "com.yourcompany.app"๊ณผ ๊ฐ์ ์ผ๊ด๋ id๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
"id": "/"
์์ ์ ์ธ id๋ ์ด์ ์ฒด์ ๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ PWA๋ฅผ ์ ํํ๊ฒ ์๋ณ, ์
๋ฐ์ดํธ ๋ฐ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ๋ฉฐ, ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
๋งค๋ํ์คํธ๋ฅผ ๋์ด์: OS ํตํฉ์ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค
๋งค๋ํ์คํธ๊ฐ PWA์ ์ ์ฒด์ฑ๊ณผ ๊ธฐ๋ฅ์ ์ ์ํ๋ ๋์, ๋ค๋ฅธ ์น API๋ค์ ์ง์ ์ผ๋ก ํตํฉ๋ ์ฑ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด ํจ๊ป ์๋ํฉ๋๋ค.
1. ์๋น์ค ์์ปค: ์ฑ๊ณผ ๊ฐ์ ์์ ์ฑ์ ์์ง
์๋น์ค ์์ปค๋ ์น ํ์ด์ง์ ๋ณ๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ JavaScript ํ์ผ์ ๋๋ค. ์ด๋ค์ ๋ค์์ ํ์์ ์ ๋๋ค:
- ์คํ๋ผ์ธ ๊ธฐ๋ฅ: ์์ฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ, ์ธํฐ๋ท ์ ์์ด ๋ถ์์ ํ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ์ค์ํ ๋๋ฆฌ๊ฑฐ๋ ์๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์์๋ PWA๊ฐ ์์ ์ ์ผ๋ก ์๋ํ๋๋ก ํฉ๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐํ: ์ฐ๊ฒฐ์ด ๋ณต์๋ ๋๊น์ง ๋คํธ์ํฌ ์์ฒญ์ ์ง์ฐ์ํต๋๋ค.
- ํธ์ ์๋ฆผ: PWA๊ฐ ์ด๋ ค ์์ง ์์ ๋๋ ์ฌ์ฉ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด OS ์๋ฆผ ์ผํฐ์ ์ง์ ํ์ํ์ฌ ์ฌ์ฐธ์ฌ๋ฅผ ์ ๋ํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์๊ฐ๋์ ์ฌ์ฉ์์๊ฒ ๋๋ฌํ ์ ์๊ฒ ํด์ฃผ๋ฏ๋ก ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค.
์ ๊ตฌํ๋ ์๋น์ค ์์ปค๋ ์์ ์ฑ๊ณผ ์๋ต์ฑ ์ธก๋ฉด์์ PWA๋ฅผ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๊ตฌ๋ณํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
2. ์น ํธ์ ์๋ฆผ: ์ ์ธ๊ณ ์ฌ์ฉ์์์ ์ํต
์๋น์ค ์์ปค๋ฅผ ํ์ฉํ๋ ์น ํธ์ ์๋ฆผ์ PWA๊ฐ ์๊ธฐ์ ์ ํ๊ณ ๊ด๋ จ์ฑ ์๋ ๋ฉ์์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด๋ผ ์ ์๊ฒ ํ๋ฉฐ, ๋ค์ดํฐ๋ธ ์ฑ ์๋ฆผ์ฒ๋ผ OS ์๋ฆผ ํธ๋ ์ด์ ๋ํ๋ฉ๋๋ค. ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ์ด๋ ์ด๋์ ์๋ ๊ฐ์ธํ๋ ์ ๋ฐ์ดํธ, ๊ฒฝ๊ณ ๋๋ ํ๋ก๋ชจ์ ์ฝํ ์ธ ๋ฅผ ๋ณด๋ผ ์ ์์์ ์๋ฏธํ๋ฉฐ, ์ฐธ์ฌ์ ์ ์ง๋ฅผ ์ด์งํฉ๋๋ค.
3. ๋ฐฐ์ง API: ์ฑ ์์ด์ฝ์ ์๊ฐ์ ์ ํธ
๋ฐฐ์ง API๋ PWA๊ฐ ์์ด์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด ๋ฐฐ์ง(์ผ๋ฐ์ ์ผ๋ก ์์ ์ ์ด๋ ์ซ์)๋ฅผ ์ค์ ํ์ฌ ์๋ก์ด ํ๋์ด๋ ์ฝ์ง ์์ ํญ๋ชฉ์ ๋ํ๋ผ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์์๊ฒ ์ ๋ฐ์ดํธ๋ฅผ ์๋ฆฌ๋ ๋ฏธ๋ฌํ์ง๋ง ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ, ๋ค์ดํฐ๋ธ ๋ฉ์์ง ๋๋ ์์ ๋ฏธ๋์ด ์ฑ์ ๋์์ ๋ชจ๋ฐฉํฉ๋๋ค. ์ด๋ ์ฐธ์ฌ๋ฅผ ์ํ ๋ณดํธ์ ์ผ๋ก ์ดํด๋๋ ์๊ฐ์ ์ ํธ์ ๋๋ค.
4. ์ฐฝ ์ปจํธ๋กค ์ค๋ฒ๋ ์ด(WCO): ๋ฐ์คํฌํฑ ๊ฒฝํ ์ฌ์ฉ์ ์ง์
๋ฐ์คํฌํฑ PWA์ ๊ฒฝ์ฐ, ์ฐฝ ์ปจํธ๋กค ์ค๋ฒ๋ ์ด(WCO)๋ ๊ฐ๋ฐ์๊ฐ PWA ์ฐฝ์ ์ ๋ชฉ ํ์์ค ์์ญ์ ์ฌ์ฉ์ ์ง์ ํ์ฌ ์ผ๋ฐ์ ์ผ๋ก ์ต์ํ, ์ต๋ํ ๋ฐ ๋ซ๊ธฐ ๋ฒํผ์ ์ํด ์์ฝ๋ ๊ณต๊ฐ์ ์ฝํ ์ธ ๋ฅผ ํตํฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ ๋ค์ดํฐ๋ธํ๊ณ ๋ชฐ์ ๊ฐ ์๋ ๋ชจ์๊ณผ ๋๋์ ์ ๊ณตํ๋ฉฐ, ํ๋ฉด ๊ณต๊ฐ์ ์ต๋ํํ๊ณ ์ ํต์ ์ผ๋ก OS๊ฐ ์ ์ดํ๋ ์์ญ์ ์ฌ์ฉ์ ์ง์ ๋ธ๋๋ฉ ๋๋ ํ์ ์์๋ฅผ ํ์ฉํฉ๋๋ค.
๊ธ๋ก๋ฒ PWA๋ฅผ ์ํ ๊ฐ๋ฐ์ ๋ชจ๋ฒ ์ฌ๋ก
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ๊ธ OS ํตํฉ ๊ธฐ๋ฅ์ ๊ฐ์ถ PWA๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ์ ์คํ ๊ณ ๋ ค๊ฐ ํ์ํฉ๋๋ค:
- ๊ตญ์ ํ(i18n): ๋งค๋ํ์คํธ๊ฐ
name๋๋short_name์ ๋ํ ๋ก์ผ์ผ๋ณ ํ๋๋ฅผ ์ง์ ์ง์ํ์ง๋ ์์ง๋ง, ์ฌ์ฉ์์ ์ ํธ ์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฅธ ๋งค๋ํ์คํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค(์๋ฒ ์ธก ๊ฐ์ง ๋๋ ์ฝํ ์ธ ํ์์ ํตํด). ๋ฐ๋ก ๊ฐ๊ธฐ์ ์๋ ๋ฌธ์์ด์ ํฌํจํ ๋ชจ๋ ์ฌ์ฉ์ ๋์ ๋ฌธ์์ด์ด ํ์งํ๋์๋์ง ํ์ธํ์ญ์์ค. - ์ ๊ทผ์ฑ: ๋ค์ํ ์๊ตฌ์ ๋ฅ๋ ฅ์ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋๋ก PWA๋ฅผ ์ค๊ณํ์ญ์์ค. ์ฌ๊ธฐ์๋ ํค๋ณด๋ ํ์, ์คํฌ๋ฆฐ ๋ฆฌ๋ ํธํ์ฑ ๋ฐ ์ถฉ๋ถํ ์์ ๋๋น๊ฐ ํฌํจ๋๋ฉฐ, ์ด๋ ๊ธ๋ก๋ฒ ์ฑํ์ ์ค์ํฉ๋๋ค.
- ์ฑ๋ฅ: ํนํ ๋ค์ํ ์ง์ญ์์ ํํ ๋ณผ ์ ์๋ ๋๋ฆฐ ๋คํธ์ํฌ๋ ๊ตฌํ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ฅผ ์ํด ๋ก๋ ์๊ฐ๊ณผ ์๋ต์ฑ์ ์ต์ ํํ์ญ์์ค. ๋น ๋ฅธ PWA๋ ๋ ๋ค์ดํฐ๋ธ์ฒ๋ผ ๋๊ปด์ง๋๋ค.
- ์คํ๋ผ์ธ ์ฐ์ ์ ๋ต: ์ธํฐ๋ท ์ฐ๊ฒฐ ์์ด๋ ์๋ํ๋๋ก PWA๋ฅผ ์ค๊ณํ์ญ์์ค. ์ด๋ ๊ฐํ์ ์ธ ์ฐ๊ฒฐ์ ๊ฐ์ง ์ฌ์ฉ์๋ ์ด๋ ์ค์ ์ฝํ ์ธ ์ ์ ๊ทผํ๋ ค๋ ์ฌ์ฉ์์๊ฒ ์ค์ํฉ๋๋ค.
- ์ ์ง์ ํฅ์: PWA์ ํต์ฌ ๊ธฐ๋ฅ์ด ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋๋ก ๋ณด์ฅํ๊ณ , ์ด๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ์ง์ ์ผ๋ก ๊ณ์ธตํํ์ญ์์ค. ์ด๋ ๊ด๋ฒ์ํ ๋๋ฌ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ต์ฐจ ํ๋ซํผ ํ ์คํธ: ๋ค์ํ ์ด์ ์ฒด์ (Android, iOS, Windows, macOS, Linux) ๋ฐ ๋ธ๋ผ์ฐ์ ์์ PWA์ ์ค์น ๋ฐ ํตํฉ์ ์ฒ ์ ํ ํ ์คํธํ์ฌ ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํ์ญ์์ค.
- ๋ณด์: ํญ์ HTTPS๋ฅผ ํตํด PWA๋ฅผ ์ ๊ณตํ์ญ์์ค.
file_handlers๋share_target๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋๋ ํนํ ์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์ ์ํฅ์ ์ผ๋์ ๋์ญ์์ค.
๋์ ๊ณผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
PWA ๋งค๋ํ์คํธ ๊ธฐ๋ฅ์ ์์ฒญ๋ ํ์ ์ ๊ณตํ์ง๋ง, ๊ฐ๋ฐ์๋ ํน์ ๋์ ์ ์ธ์ํด์ผ ํฉ๋๋ค:
- ๋ธ๋ผ์ฐ์ ๋ฐ OS ์ง์ ํธ์ฐจ: ๋ชจ๋ ๊ณ ๊ธ ๋งค๋ํ์คํธ ๊ธฐ๋ฅ์ด ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ์ด์ ์ฒด์ ์์ ๊ท ์ผํ๊ฒ ์ง์๋๋ ๊ฒ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด, ์ผ๋ถ ๋ฐ์คํฌํฑ ์ ์ฉ ๊ธฐ๋ฅ์ Windows์ Chromium ๊ธฐ๋ฐ ๋ธ๋ผ์ฐ์ ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ์ ์์ต๋๋ค. ํญ์ ์ต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๊ณ ๊ฐ๋ ฅํ ๋์ฒด ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ์ญ์์ค.
- ์คํ์ ์ํ:
url_handlers,protocol_handlers,file_handlers์ ๊ฐ์ ๋ง์ ์ต์ฒจ๋จ ๊ธฐ๋ฅ์ ์์ง ์คํ์ ์ ๋๋ค. ์ ๋งํ์ง๋ง API๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ํ๋๊ทธ๋ฅผ ํ์ฑํํด์ผ ํ ์ ์์ด ์ฆ๊ฐ์ ์ธ ๊ด๋ฒ์ํ ์ฑํ์ ์ ํํฉ๋๋ค. - ์ฌ์ฉ์ ๊ถํ: ํธ์ ์๋ฆผ์ด๋ ํ์ผ ์ ๊ทผ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ช ์์ ์ธ ์ฌ์ฉ์ ๊ถํ์ด ํ์ํ๋ฉฐ, ์ฌ์ฉ์ ํผ๋ก๋ ๊ฑฐ๋ถ๋ฅผ ํผํ๊ธฐ ์ํด ์ ์คํ๊ฒ ์์ฒญํด์ผ ํฉ๋๋ค.
- ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ: ๋ค์ดํฐ๋ธ ์ฑ ์คํ ์ด์ ๋ฌ๋ฆฌ PWA ๋ฐ๊ฒฌ์ ์ฃผ๋ก ์น ๊ฒ์๊ณผ ๋ธ๋ผ์ฐ์ ์ ์ค์น ํ๋กฌํํธ์ ์์กดํฉ๋๋ค. ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ์ ์ํ SEO ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ ๊ทน๋ํ๋ ์ฌ์ ํ ์ค์ํฉ๋๋ค.
PWA ๋งค๋ํ์คํธ ๋ฐ OS ํตํฉ์ ๋ฏธ๋
ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ์ ๊ถค์ ์ ์ด์ ์ฒด์ ์์ ๋ ๊น๊ณ ๊ฐ๋ ฅํ ํตํฉ์ ํฅํ๊ณ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค:
- ์ ํฅ API์ ํ์คํ: ์คํ์ ๊ธฐ๋ฅ์ ๋๋ฆฌ ์ง์๋๋ ํ์ค์ผ๋ก ์ฑ์ํ์ฌ ๋ ์ผ๊ด๋ ๊ต์ฐจ ํ๋ซํผ ๋์์ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค.
- ํฅ์๋ ํ๋์จ์ด ์ ๊ทผ: PWA๋ ์๋ก์ด ์น API๋ฅผ ํตํด ์ฅ์น ํ๋์จ์ด(์: ๊ณ ๊ธ ์นด๋ฉ๋ผ ์ ์ด, NFC, ๋ธ๋ฃจํฌ์ค)์ ๋ํ ๋ ์ธ๋ถํ๋ ์ ๊ทผ ๊ถํ์ ์ป๊ฒ ๋์ด ๋ค์ดํฐ๋ธ ์ฑ๊ณผ์ ๊ฒฝ๊ณ๋ฅผ ๋์ฑ ํ๋ฆฌ๊ฒ ํ ๊ฒ์ ๋๋ค.
- ๋ ํ๋ถํ ์์คํ UI ํตํฉ: PWA๊ฐ ์๋ฆผ ์ผํฐ, ์์ ฏ, ์ฌ์ง์ด ์์คํ ์ค์ ์ ๋ ๊น์ด ํตํฉ๋๋ ๋ฑ OS UI ์์์ ์ํธ ์์ฉํ๋ ๋ ์ ๊ตํ ๋ฐฉ๋ฒ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
- ํฅ์๋ ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ: OS ์์ค์ ์ฑ ์คํ ์ด๋ ํฅ์๋ ๊ฒ์ ๊ธฐ๋ฅ์ ํตํด PWA๋ฅผ ๋ ์ฝ๊ฒ ๋ฐ๊ฒฌํ ์ ์๋๋ก ํ๋ ๋ ธ๋ ฅ์ด ์งํ ์ค์ ๋๋ค.
๊ฒฐ๋ก : ๊ธ๋ก๋ฒ PWA ํ๋ช ์์ฉ
ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ ๋งค๋ํ์คํธ๋ ๋จ์ํ ๊ตฌ์ฑ ํ์ผ ๊ทธ ์ด์์ ๋๋ค. ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ด์ ์ฒด์ ์์ ๊ฐ๋ ฅํ๊ณ ํตํฉ๋ ๊ฒฝํ์ผ๋ก ๋ณํํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ด๋ฌธ์ ๋๋ค. ๋น ๋ฅธ ๋ฐ๋ก ๊ฐ๊ธฐ์ ๊ณต์ ๋์๋ถํฐ ์ต์ฒจ๋จ ํ์ผ ๋ฐ ํ๋กํ ์ฝ ํธ๋ค๋ฌ์ ์ด๋ฅด๊ธฐ๊น์ง ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ดํดํ๊ณ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์๋ก์ด ์์ค์ ์ฐธ์ฌ, ์ ์ฉ์ฑ ๋ฐ ์ฌ์ฉ์ ๋ง์กฑ์ ์ด๋์ด๋ผ ์ ์์ต๋๋ค.
OS์ ์ง์ ์ผ๋ก ํตํฉ๋๋ PWA๋ฅผ ๊ตฌ์ถํ๋ค๋ ๊ฒ์ ๊ธฐ๊ธฐ๋ ์ง๋ฆฌ์ ์์น์ ๊ด๊ณ์์ด ์์ฐ์ค๋ฝ๊ณ ์ง๊ด์ ์ผ๋ก ๋๊ปด์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ด๊นจ๋ฅผ ๋๋ํ ํ๋ ์์ ์ ์ด๊ณ ๋น ๋ฅด๋ฉฐ ๋งค๋ ฅ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์น ํ๋ซํผ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ PWA ๋งค๋ํ์คํธ๋ ๊ฐ๋ฐ์๊ฐ ์ฐจ์ธ๋ ๊ธ๋ก๋ฒ, ๊ต์ฐจ ํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํ๋ ํต์ฌ ๋๊ตฌ๋ก ๋จ์ ๊ฒ์ ๋๋ค.
์ค๋ ์ด ๊ณ ๊ธ ๊ธฐ๋ฅ๋ค์ ํ์ํ๊ธฐ ์์ํ์ฌ ์น ์กด์ฌ๊ฐ์ ์ง์ ์ผ๋ก ํตํฉ๋๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋์ด์ฌ๋ฆฌ์ญ์์ค!