Зависит ли поддержка push в Service Workers от Интернета и сторонних сервисов Google / Apple? - PullRequest
0 голосов
/ 14 мая 2018

Зависит ли поддержка push в Service Workers от Firebase (и аналога Apple)? Все учебники, которые я нахожу, содержат этап, на котором вы регистрируете учетную запись Firebase, но для нашего веб-приложения это не требуется, поскольку оно будет использоваться в помещениях без доступа к Интернету.

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

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

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

tldr;это зависит от вашего браузера, так как его необходимо настроить на уровне браузера.По состоянию на май 2018 года кажется, что Firefox - единственный, который позволяет настроить URL службы .Для всех остальных вам нужен интернет для доставки push-сообщений.

В спецификации спецификации Push API декабря 2017 Push (которая является официальной по состоянию на май 2018 года) говорится следующее:

Термин «служба push» относится к системе, которая позволяет серверам приложений отправлять push-сообщения в веб-приложение.Push-служба обслуживает push-конечную точку или конечные точки для push-подписок, которые она обслуживает.

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

В апреле 2018 года они ослабили это требование и , спецификация теперь позволяет настраивать другого поставщика .


Я также рекомендую прочитать в этомупрощенная версия того, как работает webpush , где основные моменты заключаются в следующем:

  1. Сначала веб-браузер конечного пользователя должен установить push-канал с push-сервером производителя браузера.В случае Firefox это будет сервер Mozilla, в случае Chrome - сервер Google.После этого в браузер отправляется уникальный URL-адрес конечной точки, и браузер генерирует пару открытого и закрытого ключей, которая хранится внутри браузера.Затем браузер создает открытый ключ и секрет аутентификации пользователя, используемые вашим сервером для шифрования сообщений E2E в браузере пользователя.
  2. Браузер отправляет открытый ключ, секретный ключ аутентификации и URL-адрес конечной точки на ваш сервер и на сервер.каким-то образом сохраняет это (в базе данных, в памяти, в файле и т. д.).
  3. Когда приходит время, когда сервер желает отправить push-сообщение, он извлекает сохраненную информацию о подписке push-сообщений и создаетзашифрованное сообщение с открытым ключом и аутентификацией пользователя.Затем сервер связывается с URL-адресом конечной точки и сообщает ему передать некоторый контент пользовательскому агенту.
  4. Если все выглядит нормально, сервер push-уведомлений отправляет сообщение в браузер пользователя.
0 голосов
/ 14 мая 2018

Интернет или сторонние push-сервисы не требуются, если вы предоставляете локальную push-сервис на локальном сетевом сервере, к которому можно получить доступ по URL-адресу HTTPS из браузеров клиентов .Ваша локальная служба push-уведомлений должна реализовывать спецификацию W3C Push API , и вы также можете искать в Интернете или на GitHub push-службу с открытым исходным кодом на выбранном вами языке.

Браузерыпотребуется URL-адрес HTTPS, который разрешается на сервер в вашей сети через имя хоста или IP, так что, скорее всего, будут использоваться самозаверяющие сертификаты SSL.Устройствам потребуются сертификаты (или CA), которые неявно доверены или явно добавлены в качестве доверенного CA / cert.

...