как экспортировать данные, полученные событием в сервисном работнике, чтобы реагировать на компоненты - PullRequest
0 голосов
/ 21 июня 2019

Я использую сервис pushy.me для получения push-уведомлений, и я все настраиваю правильно.Итак, теперь я получаю push-файл в файле сервисного работника и могу показать его в консоли, но проблема в том, что я должен получить доступ к данным push-запроса в моих реагирующих компонентах, так как я могу экспортировать сгруппированные данные в сервисном работнике и получить к ним доступ измои реагирующие компоненты или любые другие js-файлы?

Я предполагаю, что могу выбросить другое событие в событие сервисного работника и получить его от любого другого компонента, но не смог сделать это, потому что я действительно новичок в событиях!

это файл service-worker.js:

// Import Pushy Service Worker 1.0.3
// Listen for incoming push notifications
self.addEventListener("push", function(event) {
  // Extract payload as JSON object, default to empty object
  var data = event.data.json() || {};
  console.log(data);

  var e = new CustomEvent("build", { data });
  // Extract notification image URL
  var image = data.image || "https://sdk.pushy.me/web/assets/img/icon.png";

  // Notification title and body
  var title = data.title || "";
  var body = data.message || "";

  // Notification options
  var options = {
    body: body,
    icon: image,
    badge: image,
    data: {
      url: data.url
    }
  };

  // Wait until notification is shown
  event.waitUntil(self.registration.showNotification(title, options));
});

// Listen for notification click event
self.addEventListener("notificationclick", function(event) {
  // Hide notification
  event.notification.close();

  // Attempt to extract notification URL
  var url = event.notification.data.url;

  // Check if it exists
  if (url) {
    // Open the target URL in a new tab/window
    event.waitUntil(clients.openWindow(url));
  }
});

1 Ответ

0 голосов
/ 21 июня 2019

Каналом связи, доступным между Service Workers и обычным контекстом выполнения JavaScript, является postMessage.Вы присоединяете прослушиватели событий postMessage в коде клиента (код React), а затем отправляете сообщения от Service Worker.

https://developer.mozilla.org/en-US/docs/Web/API/Client/postMessage

...