// 存储所有客户端ID(用于定向通知) let controlledClients = []; // 监听安装事件 self.addEventListener('install', e => e.waitUntil(self.skipWaiting())); // 监听激活事件 self.addEventListener('activate', e => e.waitUntil(clients.claim().then(() => self.clients.matchAll()) .then(clients => { // 获取所有受控客户端ID controlledClients = clients.map(c => c.id); }) ) ); // 监听客户端连接变化(窗口打开/关闭) self.addEventListener('message', event => { if (event.data.type === 'REGISTER_CLIENT') { if (!controlledClients.includes(event.data.clientId)) { controlledClients.push(event.data.clientId); } } }); // 核心:处理锁屏/解锁广播 self.addEventListener('message', event => { const { action, senderId } = event.data; if (action === 'LOCK' || action === 'UNLOCK') { // 向所有其他客户端广播 self.clients.matchAll().then(clients => { clients.forEach(client => { // 排除发送者 if (client.id !== senderId) { client.postMessage({ action: `${action}_REQUESTED`, timestamp: Date.now() }); } }); }); } }); self.addEventListener('push', event => { const title = '新消息'; const options = { body: event.data.text(), // icon: '/images/icon.png', // badge: '/images/badge.png' }; event.waitUntil( self.registration.showNotification(title, options) ); }); self.addEventListener('notificationclick', event => { event.notification.close(); event.waitUntil( clients.openWindow('https://example.com/notifications') ); });