Дополнительная информация:
- Я пробовал два разных телефона: не работает
- Версия iOS: 17.4
- да, я добавил PWA в свой главный экран
Кто-нибудь еще сталкивался с этим?
======== Подробности кода ниже
Вот как настроен мой next.config.js:
Код: Выделить всё
const isDev = process.env.NODE_ENV === 'development'
const withPWA = require('next-pwa')( {
dest: "public",
sw: "sw.js",
register: true,
skipWaiting: true,
disable: isDev
});
const nextConfig = {
reactStrictMode: true,
};
module.exports = withPWA(nextConfig);
Код: Выделить всё
webpush.setVapidDetails(
"mailto:[email protected]",
vapidKeys.publicKey,
vapidKeys.privateKey
);
Код: Выделить всё
self.addEventListener("push", async (e) => {
try {
const { message, body, icon } = JSON.parse(e.data.text());
// Notify the main thread to play sound
const clients = await self.clients.matchAll();
clients.forEach(client => {
client.postMessage({
type: 'PLAY_SOUND'
});
});
e.waitUntil(
self.registration.showNotification(message)
);
} catch (error) {
// Send error log to the main thread
self.clients.matchAll().then(clients => {
clients.forEach(client => {
client.postMessage({
type: 'ERROR',
message: `Error in push event: ${error.message}`
});
});
});
}
});
self.addEventListener("notificationclick", (event) => {
event.preventDefault()
event.notification.close();
event.waitUntil(
self.clients.matchAll({
type: "window",
}).then((clientList) => {
for (const client of clientList) {
if (client.url === "/" && "focus" in client)
return client.focus();
}
if (clients.openWindow) return clients.openWindow("/");
})
);
});
Я пытался отладить контекст Safari на iOS. Я вижу, что sw.js загружается правильно и журналы консоли работают (он даже запускает специальное событие, которое я использовал для отладки)
Но я думаю, что проблема связана с showNotification и я не могу понять почему.
Подробнее здесь: https://stackoverflow.com/questions/789 ... roid-web-m