UNPKG

press-plus

Version:
85 lines (69 loc) 1.84 kB
// #ifdef H5 import axios from 'axios'; // #endif import { RAINBOW_LINK } from './config'; export function checkUseServiceWorker(key: string, getFrontConfig?: Function) { let promise; // #ifdef H5 promise = new Promise((resolve, reject) => { let func = () => axios.get(`${RAINBOW_LINK}?t=${Date.now()}`); if (typeof getFrontConfig === 'function') { func = () => getFrontConfig('service_worker_config', 'service_worker_config'); } func().then((res: any) => { const result = res?.[key] || res.data?.[key]; if (process.env.NODE_ENV === 'development') { reject(); return; } if (result === 'open') { resolve(1); return; } reject(); }) .catch(() => { reject(); }); }); // #endif // #ifndef H5 promise = Promise.reject(); // #endif return promise; } export function registerServiceWorker(key: string, getFrontConfig?: Function) { // #ifdef H5 if ('serviceWorker' in navigator) { checkUseServiceWorker(key, getFrontConfig) .then(() => { register(key); }) .catch(() => { unregister(); }); } else { console.log('[Service Worker] 不支持'); } // #endif } function register(key: string) { window.addEventListener('load', () => { navigator.serviceWorker .register(`./service-worker-${key}.js`) .then((registration) => { console.log('[Service Worker] 注册成功:', registration); }) .catch((error) => { console.log('[Service Worker] 注册失败:', error); }); }); } function unregister() { console.log('[Service Worker] unregister'); navigator.serviceWorker.getRegistrations().then((registrations) => { registrations.forEach((sw) => { sw.unregister(); }); }); }