Как запланировать повторяющееся веб-уведомление в React локально?

Я пытаюсь создать веб-приложение React, которое будет уведомлять пользователя каждый день в установленное время без необходимости подключения к серверу.

Например: пользователь устанавливает, что он / она хочет получать уведомления каждый день в 17:00. Затем приложение каким-то образом локально установит это повторяющееся веб-уведомление. Пользователь будет уведомлен, даже если устройство не подключено к серверу и даже если веб-приложение не открыто.

Я новичок в разработке React. Я читал, что это можно каким-то образом сделать с помощью сервис-воркера, но я не нашел способа установить повторяющееся уведомление локально.

Я пробовал такие пакеты, как node-schedule или response-browser-notifications, но я не нашел способа использовать их с работником службы.

Итак, у меня следующий вопрос: Можно ли настроить повторяющиеся веб-уведомления локально? Если да, то как бы вы это сделали?

import React, { Component } from "react";

class NotificationScheduler extends Component {
  constructor() {
    super();
    this.state = {
      // information about the notification time...
    };

    this.setNotification = this.setNotification.bind(this);
  }

  setNotification = () => {
    // What should be here?
  };

  render() {
    return <Button onClick={this.setNotification}>{"Schedule notitication"}</Button>;
  }
}


person Morcinus    schedule 29.06.2020    source источник


Ответы (1)


По-видимому, нет возможности сделать это локально в браузерах, потому что браузеры не поддерживают триггеры времени в сервис-воркерах.

При этом эти триггеры уведомлений находятся в разработке, но маловероятно, что мы увидим их в ближайшее время.

Подробнее об этом можно прочитать здесь: https://web.dev/notification-triggers/.

Поэтому, если вы пытаетесь создать что-то вроде обычных уведомлений, вам придется каждый раз отправлять push-уведомления с сервера.

Если у кого-то есть обновления или другая информация по этой теме, приветствуются дополнительные ответы :)

person Morcinus    schedule 06.07.2020