Не совсем понимаю как работает пуш

self.addEventListener('push', function (event) {
  event.waitUntil(
    fetch('/latest.json').then(function (response) {
      if (response.status !== 200) {
        console.log('Latest.json request error: ' + response.status);
        throw new Error();
      }

      return response.json().then(function (data) {
        if (data.error || !data.notification) {
          console.error('Latest.json Format Error.', data.error);
          throw new Error();
        }

        return self.registration.showNotification((not = data.notification).title, {
          icon: not.icon,
          body: not.body,
          data: {url: not.url}
        });
      }).catch(function (err) {
        console.error('Retrieve data Error', err);
      });
    })
  );
});

self.addEventListener('notificationclick', function (event) {
  event.notification.close();
  var url = event.notification.data.url;
  event.waitUntil(clients.openWindow(url));
});

sevice worket - регистрируется все ок, получаю зарегистрированный id

function urlBase64ToUint8Array(base64String) {
                            let rawData = window.atob((base64String + '='.repeat((4 - base64String.length % 4) % 4)).replace(/\-/g, '+').replace(/_/g, '/')),
                                outputArray = new Uint8Array(rawData.length);
                            for (var i = 0; i < rawData.length; ++i) 
                                outputArray[i] = rawData.charCodeAt(i);   
                            return outputArray;
                        }
                        reg.then(() => {return navigator.serviceWorker.ready;}).then(reg => reg.pushManager.subscribe({userVisibleOnly: true, applicationServerKey: urlBase64ToUint8Array('BAVR1KZoitVgsfJ8ICyp4XE0H4riw8SRIjr26F4TqM7HUrl5f3clkOMLNu_xZkQB__eJ7f_GRmpdC--BZjqmzcA')}).then(sub => this.jx(false, {md:'user', po:'push', pushid:sub.endpoint})));   

     
                

Затем в latest.json

{"notification":{"icon":"https://site.ru/tpl/image/icon-android-192.webp", "url":"https://site.ru/","title":"Крутейшая новость","body":"Мы сделали офигительную подписку для Chrome"}, "id":"fItNWxYqKAc:APA91bHGR9OQftPghIk-BH6mVBFgYt5IwG9Nja7mj36DvxkjImUMFHOsgUDZFw3ug5a_3OL9GjfzAVAJ1JM0eORkErXIiSjl9kI-M_2-aN6-m6jbhas5AkEfTSkw5Aph1c69RX9EpQ"}

В браузере Sevice Worket, нажимаю на push. Отлично пуш уведомление приходит.

Не то. Собственно, есть уникальный id, рабочий и тд. Каким образом возможно отправить push увeдомление из под php?

Как то раз пытался, ничего не вышло...


Ответы (0 шт):