Как вызвать сервисный работник "Push" Веб-уведомление нажатием кнопки - PullRequest
0 голосов
/ 19 января 2019

Как мне вызвать мой service-worker.js одним нажатием кнопки?Теперь я могу отправить информацию об уведомлении, которая находится в моем service-worker.js, нажав кнопку на devtools.enter image description here

Все, что мне нужно, - это просто нажать кнопку, я не знаю, как инициировать код нажатием кнопки.Я делал это, но я не знаю, что поместить в мой файл send_notification, чтобы вызвать уведомление.Справка.

это мой main.js

function sendSubscriptionToBackEnd(subscription) {
    console.log(subscription);
    var subscription_parsed = JSON.parse(subscription)
    // return fetch(subscription_parsed.endpoint, {
    return fetch("send_notification.php", {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            // body: JSON.stringify(subscription)
            body: subscription
        })
        .then(function (response) {
            console.log(response);
            if (!response.ok) {
                throw new Error('Bad Status code from server');
            }

            // return response.json();
        })
        .then(function (responseData) {
            console.log(responseData);
            // if (!(responseData.data && responseData.data.success)) {
            //     throw new Error('Bad response from server.');
            // }
        });
}

notifyButton.addEventListener('click', function () {
    if (isSubscribed) {
        alert("message send");
        sendSubscriptionToBackEnd(subscriptionObjectToo);
    } else {
        alert("message not send");
    }
});

Я передаю значение serviceworker.pushManager.subscribe, которое вот так:

{"endpoint":"https://fcm.googleapis.com/fcm/send/ezu5Ndp8ggo:APA91bFytOrF-bPdwGc4uFObqai6V7N4WFFaprwc3-CQMZdyLDzpNriFSJGsJG9TBc47x4AhgWxWkMCdBbTZiGhBy1RFv0oBQEmAUELCtpgNxGuivsjNajiXh95x3gH-NY2nyTyAtdF4","expirationTime":null,"keys":{"p256dh":"BPcqPUFomZZCNIrcbzqLWaDL-Hyc3vNuxqeMKmhbbBxJNeExd0AyZuW33gMYEEiNG9go_IyUS0VQEnDN_zj-B8E","auth":"Sn8691zwOGCd3ttXCbb47w"}}

в моемNotification.php, но я не знаю, что написать в моем файле.Это должен быть файл php?или файл JS?Справка

sw.js

'use strict';

self.addEventListener('push', function (event) {
    console.log('[Service Worker] Push Received.');
    console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);

    const title = 'Push Codelab';
    const options = {
        body: 'Yay it works.',
        icon: 'images/icon.png',
        badge: 'images/badge.png'
    };

    event.waitUntil(self.registration.showNotification(title, options));
});

self.addEventListener('notificationclick', function (event) {
    console.log('[Service Worker] Notification click Received.');

    event.notification.close();

    event.waitUntil(
        clients.openWindow('https://developers.google.com/web/')
    );
});
...