스플래시 화면 최적화: 네이티브 스플래시 화면 제거 및 Capacitor 스플래시 화면 개선

This commit is contained in:
hansoo
2025-03-16 23:19:57 +09:00
parent a030e0cb5b
commit 5d1d773c15
17 changed files with 53 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
import React, { useEffect } from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import { SplashScreen } from '@capacitor/splash-screen';
import './App.css';
import Login from './pages/Login';
import Register from './pages/Register';
@@ -20,8 +21,6 @@ import PaymentMethods from './pages/PaymentMethods';
import Settings from './pages/Settings';
import { BudgetProvider } from './contexts/BudgetContext';
import PrivateRoute from './components/auth/PrivateRoute';
import { SplashScreen } from '@capacitor/splash-screen';
// 전역 오류 핸들러
const handleError = (error: any) => {
console.error('앱 오류 발생:', error);
@@ -73,12 +72,40 @@ class ErrorBoundary extends React.Component<
}
function App() {
// 앱 시작 시 스플래시 화면 초기화
// 앱 로딩이 완료되었을 때 스플래시 화면을 숨김
useEffect(() => {
// 스플래시 화면 표시 시간 설정 (3초)
setTimeout(() => {
SplashScreen.hide();
}, 3000);
// 웹뷰 콘텐츠가 완전히 로드되었을 때만 스플래시 화면을 숨김
const onAppReady = async () => {
try {
// 1초 후에 스플래시 화면을 숨김 (콘텐츠가 완전히 로드될 시간 확보)
setTimeout(async () => {
try {
await SplashScreen.hide();
console.log('스플래시 화면 숨김 성공');
} catch (err) {
console.error('스플래시 화면 숨김 오류:', err);
}
}, 1000);
} catch (err) {
console.error('앱 준비 오류:', err);
}
};
// 앱 준비 함수 실행
onAppReady();
// 추가 보호장치: 페이지 로드 시 다시 실행
const handleLoad = () => {
setTimeout(() => {
SplashScreen.hide().catch(() => {});
}, 1000);
};
window.addEventListener('load', handleLoad);
return () => {
window.removeEventListener('load', handleLoad);
};
}, []);
return (