Push-уведомления PWA не работают в iOS Safari (но работают в Android, Интернете, Mac OS Safari)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Push-уведомления PWA не работают в iOS Safari (но работают в Android, Интернете, Mac OS Safari)

Сообщение Anonymous »

У меня есть приложение NextJS PWA, и я настроил его с помощью VAPID и web-push (nodejs). Уведомление появляется на всех других устройствах (Android, Web, Mac Safari), но не на iPhone с Safari.
Дополнительная информация:
  • Я пробовал два разных телефона: не работает
  • Версия iOS: 17.4
  • да, я добавил PWA в свой главный экран
Странно то, что я получаю событие push. Итак, work.js работает нормально. Но проблема в том, что при отображении всплывающего окна, например. self.registration.showNotification. Я пробовал много всего, но застрял на этом.
Кто-нибудь еще сталкивался с этим?
======== Подробности кода ниже
Вот как настроен мой 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);

Как я настраиваю данные VAPID:

Код: Выделить всё

webpush.setVapidDetails(
"mailto:[email protected]",
vapidKeys.publicKey,
vapidKeys.privateKey
);
Вот как выглядит мой файл worker.js:

Код: Выделить всё

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("/");
})
);
});
Я пробовал на двух разных устройствах iPhone. Я пробовал на Android (работает), пробовал на Mac OS (работает).
Я пытался отладить контекст Safari на iOS. Я вижу, что sw.js загружается правильно и журналы консоли работают (он даже запускает специальное событие, которое я использовал для отладки)
Но я думаю, что проблема связана с showNotification и я не могу понять почему.

Подробнее здесь: https://stackoverflow.com/questions/789 ... roid-web-m
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PWA Push -уведомления не работают на сафари для iOS (но работая над Android, Web, Mac OS Safari)
    Anonymous » » в форуме IOS
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • PWA Push -уведомления не работают на сафари для iOS (но работая над Android, Web, Mac OS Safari)
    Anonymous » » в форуме IOS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • URL Flutter PWA получает усечение в загруженной PWA (iOS)
    Anonymous » » в форуме IOS
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • «Войти через Apple» не работает PWA на iOS (тот же код работает в Интернете)
    Anonymous » » в форуме IOS
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Локальные уведомления, не поступающие в ios, реагируют на встроенные push-уведомления
    Anonymous » » в форуме IOS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»