From ec9ef74204db2051cc3a767927c7c8808b439245 Mon Sep 17 00:00:00 2001 From: gbpark Date: Sun, 3 May 2026 07:21:25 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20PWA=20=ED=92=80=EC=8A=A4=ED=81=AC=EB=A6=B0?= =?UTF-8?q?=20=EB=A9=94=ED=83=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - apple-mobile-web-app-capable + status-bar-style: iOS Safari 의 홈 화면 추가 시 standalone (주소창 + 하단바 제거) - viewportFit:cover: 노치/홈바 영역까지 사용 - userScalable:false + maximumScale:1: 시연 중 핀치 줌 방지 - themeColor: 알람 모드 배경(#0d0202)과 일치 iOS PT 폰: Safari 공유 → 홈 화면에 추가 → 풀스크린 standalone. Android PT 폰일 경우: manifest.json + icon 추가 별도 필요 (다음 단계). Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/app/(mobile)/layout.tsx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/frontend/app/(mobile)/layout.tsx b/frontend/app/(mobile)/layout.tsx index 293caffe..b5f47745 100644 --- a/frontend/app/(mobile)/layout.tsx +++ b/frontend/app/(mobile)/layout.tsx @@ -1,6 +1,29 @@ +import type { Metadata, Viewport } from "next"; import { AuthProvider } from "@/contexts/AuthContext"; import { RequireAuth } from "@/components/auth/AuthGuard"; +export const metadata: Metadata = { + title: "INVYONE EHS", + description: "INVYONE 작업자 알림 동반 화면", + // iOS Safari "홈 화면에 추가" 시 standalone 모드 (주소창/하단바 제거) + appleWebApp: { + capable: true, + statusBarStyle: "black-translucent", + title: "INVYONE EHS", + }, +}; + +export const viewport: Viewport = { + width: "device-width", + initialScale: 1, + maximumScale: 1, + userScalable: false, + // 노치/홈바 영역까지 사용 + viewportFit: "cover", + // PWA 시 상태표시줄 색 + themeColor: "#0d0202", +}; + export default function MobileLayout({ children }: { children: React.ReactNode }) { return (