PWA Features - kookmin-sw/capstone-2025-44 GitHub Wiki
π Progressive Web App Features
νμνμ΄λ μΉ μ±μ΄μ§λ§, λ€μ΄ν°λΈ μ±κ³Ό μ μ¬ν μ¬μ©μ κ²½νμ μ 곡νκΈ° μν΄ λ€μν PWA κΈ°λ₯μ ꡬννμμ΅λλ€.
Relevant Source Files
- public/manifest.json
- public/pwabuilder-sw.js
- public/firebase-messaging-sw.js
- public/.well-known/assetlinks.json
- public/index.html
- public/offline.html
- src/api/fcm-api.tsx
- src/hooks/queries/usePostFcmToken.ts
- src/recoil/atoms/fcm-token-state.ts
1. μμ€ν κ°μ
νμνμ΄λ λ€μκ³Ό κ°μ PWA κΈ°λ₯μ ν΅ν΄ λ€μ΄ν°λΈ μ±κ³Ό μ μ¬ν μ¬μ©μ κ²½νμ μ 곡ν©λλ€:
- μΉ μ± λ§€λνμ€νΈλ₯Ό ν΅ν μ± μ€μΉ μ§μ
- μλΉμ€ μ컀λ₯Ό ν΅ν μ€νλΌμΈ μ§μ λ° μΊμ±
- νΈμ μλ¦Όμ ν΅ν μ¬μ©μ μ¬μ°Έμ¬ μ λ
- Android νλ«νΌκ³Όμ ν΅ν©μ μν Digital Asset Links ꡬν
2. μΉ μ± λ§€λνμ€νΈ (Web App Manifest)
manifest.json
νμΌμ μ±μ λ©νλ°μ΄ν°λ₯Ό μ μνμ¬, μ¬μ©μκ° ν νλ©΄μ μ±μ μ€μΉνκ³ μ€νν μ μλλ‘ μ§μν©λλ€.
μ£Όμ μμ±
μμ± | κ° | μ€λͺ |
---|---|---|
short_name |
"νμνμ΄" | μ± μμ΄μ½ μλμ νμλ μ΄λ¦ |
name |
"νμνμ΄" | μ 체 μ± μ΄λ¦ |
description |
"λλ€ μ£Όλ―Όλ€κ³Ό λμμ μ£Όκ³ λ°μμ" | μ±μ κ°λ¨ν μ€λͺ |
start_url |
"/" | μ± μ€ν μ μμν URL |
display |
"standalone" | λΈλΌμ°μ UI μμ΄ μ 체 νλ©΄ νμ |
theme_color |
"#253659" | μ±μ ν λ§ μμ |
background_color |
"#ffffff" | μ± λ‘λ© μ λ°°κ²½ μμ |
orientation |
"portrait-primary" | κΈ°λ³Έ νλ©΄ λ°©ν₯ |
icons |
λ€μν ν¬κΈ°μ μμ΄μ½ | μ± μμ΄μ½μΌλ‘ μ¬μ©λ μ΄λ―Έμ§λ€ |
screenshots |
μ¬λ¬ μ΄λ―Έμ§ | μ± μ€ν μ΄μ νμλ μ€ν¬λ¦°μ·λ€ |
λν, Androidμ μ μν μμ΄μ½μ μν maskable μμ΄μ½κ³Ό iOS μ§μμ μν νΉμ μμ΄μ½λ ν¬ν¨λμ΄ μμ΅λλ€.
Sources:
3. μλΉμ€ μ컀 ꡬν (Service Worker Implementation)
μλΉμ€ μ컀λ μ€νλΌμΈ κΈ°λ₯, 리μμ€ μΊμ±, λ°±κ·ΈλΌμ΄λ μ²λ¦¬λ₯Ό μ§μν©λλ€. νμνμ΄λ Workbox λΌμ΄λΈλ¬λ¦¬λ₯Ό κΈ°λ°μΌλ‘ ν μλΉμ€ μ컀λ₯Ό μ¬μ©ν©λλ€.
μλΉμ€ μ컀 μλͺ μ£ΌκΈ°
- μ€μΉ κ³Όμ : μ€μΉ μ μ€νλΌμΈ λ체 νμ΄μ§λ₯Ό μΊμμ μ μ₯ν©λλ€.
- λ€λΉκ²μ΄μ ν리λ‘λ: μ¨λΌμΈ μνμμ μ΄κΈ° νμ΄μ§ λ‘λ©μ λΉ λ₯΄κ² ν©λλ€.
- νμΉ μ²λ¦¬: λ€λΉκ²μ΄μ μμ²μ κ°λ‘μ±κ³ μ€νλΌμΈ λ체 νμ΄μ§λ₯Ό μ 곡ν©λλ€.
- μΊμ κ΄λ¦¬: Workboxλ₯Ό μ¬μ©νμ¬ ν¨μ¨μ μΈ μΊμ κ΄λ¦¬λ₯Ό μνν©λλ€.
Sources:
4. λͺ¨λ°μΌ ν΅ν© (Mobile Integration)
νμνμ΄λ Android νλ«νΌκ³Όμ ν΅ν©μ μν΄ Digital Asset Links νλ‘ν μ½μ ꡬννμ¬ Trusted Web Activity (TWA) κΈ°λ₯μ μ§μν©λλ€.
Android μ± ν΅ν©
assetlinks.json
νμΌμ μΉ μ±κ³Ό Android ν¨ν€μ§ κ°μ μ λ’°ν μ μλ μ°κ²°μ μ€μ ν©λλ€. μ΄λ₯Ό ν΅ν΄:
- λ₯ λ§ν¬: Android μΈν νΈλ₯Ό ν΅ν΄ PWAμμ μ½ν μΈ λ₯Ό μ§μ μ΄ μ μμ΅λλ€.
- TWA ꡬν: PWAλ₯Ό Google Play μ€ν μ΄ μ±μΌλ‘ ν¨ν€μ§ν μ μμ΅λλ€.
- μ± μΈμ¦: SHA256 μΈμ¦μλ₯Ό μ¬μ©νμ¬ μ°κ²°μ κ²μ¦ν©λλ€.
Sources:
5. νΈμ μλ¦Ό (Push Notifications)
νμνμ΄λ Firebase Cloud Messaging (FCM)μ μ¬μ©νμ¬ νΈμ μλ¦Όμ ꡬνν©λλ€.
μ£Όμ κ΅¬μ± μμ
- FCM API μ°λ:
fcm-api.tsx
λ₯Ό ν΅ν΄ λ°±μλμ ν΅μ ν©λλ€. - FCM ν ν° κ΄λ¦¬:
usePostFcmToken.ts
ν κ³Όfcm-token-state.ts
μν°μ μ¬μ©νμ¬ ν ν°μ κ΄λ¦¬ν©λλ€. - μλΉμ€ μ컀:
firebase-messaging-sw.js
λ₯Ό ν΅ν΄ λ°±κ·ΈλΌμ΄λμμ μλ¦Όμ μ²λ¦¬ν©λλ€.
Sources:
- src/api/fcm-api.tsx
- src/hooks/queries/usePostFcmToken.ts
- src/recoil/atoms/fcm-token-state.ts
- public/firebase-messaging-sw.js
6. μμ½
νμνμ΄μ PWA ꡬνμ λ€μκ³Ό κ°μ κΈ°λ₯μ ν¬ν¨ν©λλ€:
- π² μ± μ€μΉ μ§μ: μΉ μ± λ§€λνμ€νΈλ₯Ό ν΅ν ν νλ©΄ μ€μΉ
- πΆ μ€νλΌμΈ μ§μ: μλΉμ€ μ컀λ₯Ό ν΅ν μ€νλΌμΈ κΈ°λ₯ μ 곡
- π νΈμ μλ¦Ό: FCMμ ν΅ν μ€μκ° μλ¦Ό μμ
- π€ λͺ¨λ°μΌ ν΅ν©: Android νλ«νΌκ³Όμ κΉμ ν΅ν©μ μν Digital Asset Links ꡬν
μ΄λ¬ν κΈ°λ₯λ€μ νμνμ΄λ₯Ό λ€μ΄ν°λΈ μ±κ³Ό μ μ¬ν μ¬μ©μ κ²½νμ μ 곡νλ κ°λ ₯ν μΉ μ ν리μΌμ΄μ μΌλ‘ λ§λ€μ΄μ€λλ€.