AbortError: Registration failed - push service error
-
vectorserver last edited by vectorserver
Престала работать подписка на PUSH уведомления, в баг репорте на 2 моих обращения уже больше месяца не отвечают!
На данный момент версия браузера: 122.0.5643.142
Замечу сразу, в других браузерах Microsoft Edge, Chrome все работает отлично!При создании подписки (subscription ) вылетает AbortError: Registration failed - push service error
https://cleverpush.com/en/test-notifications/
async function initPush() { if (!('serviceWorker' in navigator)) { console.warn('ServiceWorker не поддерживается'); return; } try { const reg = await navigator.serviceWorker.register('/mypush-service-worker.js'); await navigator.serviceWorker.ready; console.log('✅ SW зарегистрирован', reg); const btn = document.createElement('button'); btn.textContent = 'Разрешить уведомления'; btn.style = 'bottom:20px;right:20px;padding:10px;background:red;color:white;border:none;border-radius:8px;'; document.body.appendChild(btn); btn.addEventListener('click', async () => { const perm = await Notification.requestPermission(); if (perm !== 'granted') { alert('Разрешите уведомления!'); return; } try { const vapidKey = 'BGBrZo_OfZEMS3msxlJkxxRAk0NN7inbBCP6_dY8u1gN8kLNRPvQOf4Lt40lMTmaNNrVL8T1ZIb8lp5YBh4oiJc'; const keyArray = urlBase64ToUint8Array(vapidKey); const subscription = await reg.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: keyArray, }); console.log('✅ Подписка успешна', subscription); await sendSubscriptionToServer(subscription); alert('Уведомления успешно активированы!'); btn.remove(); } catch (err) { console.error('❌ Ошибка подписки', err.name, err.message); if (err.name === 'AbortError') { alert('Ошибка Push-сервиса. Проверьте VAPID-ключ или HTTPS.'); } } }); } catch (err) { console.error('Ошибка регистрации Service Worker:', err); } } function urlBase64ToUint8Array(base64String) { const padding = '='.repeat((4 - base64String.length % 4) % 4); const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/'); const rawData = atob(base64); return Uint8Array.from([...rawData].map(ch => ch.charCodeAt(0))); } async function sendSubscriptionToServer(subscription) { const res = await fetch('/save_subscription.php', { method: 'POST', body: JSON.stringify(subscription), headers: { 'Content-Type': 'application/json' }, }); if (!res.ok) throw new Error('Не удалось сохранить подписку'); } initPush();
-
leocg