#php #push-notification #payload #web-push
#php #push-уведомление #полезная нагрузка #web-push
Вопрос:
Я настроил webpush, и все идет хорошо… Я зарегистрировал service-worker.js , может запросить разрешение, сохранить подписку в моей базе данных и отправить push-уведомление с сервера, используя установленную библиотеку.
Когда я отправляю push-уведомление
[
'subscription' => Subscription::create($subs_arr),
'payload' => '{"title":"test title","msg":"Hello World!", "icon":"https://www.newhomesforsale.co.uk/media/chevron.png","url":"https://www.newhomesforsale.co.uk/"}'
]
];
Я получаю сообщение об успешном завершении:
[v] Message sent successfully for subscription https://fcm.googleapis.com/fcm/send/e2JHJ2YcIfM:APA91bHwU7CruFTDkpAH-zbnJRNhvJEK-mCze2hFNa48mdK8pk-oWuXJUn57Ai9Nw0d-skviCfJ40g1yX7qWKucGHPF3jeNyhkJfZ-8kpxYJNQowrAR561b0dQZJAseL_eBsJRMrxnDP.
и в браузере появляется push-сообщение — отлично.
Проблема, с которой я сталкиваюсь, заключается в том, что файл service-worker, похоже, не видит информацию о полезной нагрузке, потому что сообщение отображается даже так просто
Oh No - no data {"isTrusted": true}
Файл Service-worker:
self.addEventListener('push', function(event) {
if (!(self.Notification amp;amp; self.Notification.permission === 'granted')) {
return;
}
const sendNotification = body => {
// you could refresh a notification badge here with postMessage API
const title = "Web Push example";
return self.registration.showNotification(title, {
body,
});
};
if (event.data) {
const message = event.data.text();
event.waitUntil(sendNotification(message));
} else {
do_serverlog('Push event but no data');
sendNotification("Oh No - no data" JSON.stringify(event));
}
});
Было бы здорово получить последний кусочек головоломки, чтобы выяснить, как правильно отправлять / считывать полезную нагрузку.
Ответ №1:
Я обнаружил, что допустил ошибку, передавая ключи в подписку ($ subs_arr).
Кажется, что если вы указали конечную точку, но не ключи, push-уведомление все еще работает, но с удаленными данными. Это отвлекло меня, поскольку я предполагал, что это вообще не сработает, если ключи отсутствуют.
Я подумал, что, возможно, это может кому-то помочь в какой-то момент.