오프라인 모드
오프라인 상태를 조회하고 캐시를 제어합니다.
개요
네트워크 연결이 없을 때 캐시된 페이지를 표시하고, 오프라인 모드를 JavaScript로 제어합니다. Android와 iOS에서 동일한 JS API를 사용합니다.
| 기능 | Android | iOS |
|---|---|---|
| 오프라인 상태 조회 | ✓ | ✓ |
| 오프라인 모드 제어 | ✓ | ✓ |
| 캐시 제어 | ✓ | ✓ |
지원 플랜: Basic 이상
오프라인 상태 조회
현재 오프라인 모드 여부는 cache.getOfflineMode()로 동기적으로 조회합니다.
const isOffline = window.unveilyBridge.cache.getOfflineMode(); // boolean
if (isOffline) {
showOfflineBanner();
}app.getInfo의 응답에도 동일한 값이 isOffline 필드로 포함됩니다.
window.unveilyBridge.app.getInfo("onAppInfo");
function onAppInfo(info) {
console.log(info.isOffline); // boolean
}오프라인 상태는 폴링으로 확인합니다
SDK는 네트워크 변경에 대한 전역 이벤트를 발생시키지 않습니다. 상태가 필요한 시점에 getOfflineMode() 또는 getInfo()로 직접 조회하세요 (예: 화면 진입 시, 요청 실패 시).
setOfflineMode
오프라인 모드를 명시적으로 활성화/비활성화합니다. 첫 번째 인자는 boolean이며, 두 번째 인자로 결과 콜백 이름(문자열)을 선택적으로 전달할 수 있습니다.
// 오프라인 모드 켜기
window.unveilyBridge.cache.setOfflineMode(true);
// 결과 콜백을 받으려면 콜백 이름을 함께 전달
window.unveilyBridge.cache.setOfflineMode(true, "onOfflineModeResult");
function onOfflineModeResult(result) {
console.log(result.enabled); // boolean — 적용된 상태
console.log(result.success); // boolean — 성공 여부
// 실패 시 result.error 에 사유가 담깁니다
}콜백 이름을 생략하면 기본값 onOfflineModeResult가 사용됩니다.
오프라인 폴백 페이지 설정
네트워크가 없을 때 표시할 페이지를 assets/config.json에서 설정합니다.
{
"offline": {
"enabled": true,
"fallbackPage": "offline.html"
}
}app/src/main/assets/offline.html을 생성합니다. SDK는 네트워크 변경 이벤트를 발생시키지 않으므로, 다시 시도 버튼으로 페이지를 새로고침하도록 구성합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>오프라인</title>
</head>
<body>
<h1>인터넷 연결을 확인해 주세요</h1>
<p>네트워크 연결이 복구되면 아래 버튼을 눌러 다시 시도하세요.</p>
<button type="button" onclick="window.location.reload()">다시 시도</button>
</body>
</html>캐시 제어
clearCache
WebView 캐시를 초기화합니다. 앱 업데이트 후 강제 새로고침이 필요할 때 사용합니다. 인자는 boolean이며, true를 전달하면 캐시 초기화 후 페이지를 새로고침합니다.
window.unveilyBridge.cache.clearCache(true); // 초기화 후 새로고침
window.unveilyBridge.cache.clearCache(false); // 초기화만