// Service Worker 注册与生命周期管理 export async function registerServiceWorker(): Promise { if (!('serviceWorker' in navigator)) { console.warn('Service Worker 不支持'); return null; } try { const registration = await navigator.serviceWorker.register('/sw.js', { scope: '/', }); console.log('SW 注册成功:', registration.scope); // 检查更新 registration.addEventListener('updatefound', () => { const newWorker = registration.installing; if (newWorker) { newWorker.addEventListener('statechange', () => { if (newWorker.state === 'installed' && navigator.serviceWorker.controller) { // 新版本可用,通知用户刷新 console.log('新版本 Service Worker 可用'); } }); } }); return registration; } catch (error) { console.error('SW 注册失败:', error); return null; } } export async function unregisterServiceWorker(): Promise { if (!('serviceWorker' in navigator)) return false; try { const registration = await navigator.serviceWorker.ready; return registration.unregister(); } catch (error) { console.error('SW 注销失败:', error); return false; } } export async function startPeriodicSync(): Promise { // 发送消息启动定时检查 if (navigator.serviceWorker.controller) { navigator.serviceWorker.controller.postMessage({ type: 'START_CHECK' }); } } export async function stopPeriodicSync(): Promise { // 发送消息停止定时检查 if (navigator.serviceWorker.controller) { navigator.serviceWorker.controller.postMessage({ type: 'STOP_CHECK' }); } } export async function sendEventsToSW(events: any[]): Promise { if (!navigator.serviceWorker.controller) return; navigator.serviceWorker.controller.postMessage({ type: 'UPDATE_EVENTS', events, }); } export async function skipWaiting(): Promise { const registration = await navigator.serviceWorker.getRegistration(); if (registration?.waiting) { registration.waiting.postMessage({ type: 'SKIP_WAITING' }); } }