Библиотека PHP webpush (Minishlink WebPush) нет события.данные

#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-уведомление все еще работает, но с удаленными данными. Это отвлекло меня, поскольку я предполагал, что это вообще не сработает, если ключи отсутствуют.

Я подумал, что, возможно, это может кому-то помочь в какой-то момент.