Зависит ли поддержка push в Service Workers от Интернета и сторонних сервисов Google/Apple?
Зависит ли поддержка push в Service Workers от Firebase (и аналога Apple)? Все учебники, которые я нахожу, содержат этап, на котором вы регистрируете учетную запись Firebase, но для нашего веб-приложения это не требуется, поскольку оно будет использоваться в помещениях без доступа к Интернету.
Я бы предположил, что можно было зарегистрировать URL, соответствующий какому-либо протоколу, с которым ОС будет регистрироваться, но я не могу найти никакой информации такого рода.
Если это так, что для принудительной поддержки работника службы требуется доступ в Интернет, я полагаю, что единственный способ для веб-приложения получать фоновые уведомления - это обернуть его в собственном веб-представлении и использовать его для вызова локальных служб.
2 ответа
Интернет или сторонние push-сервисы не требуются, если вы предоставляете локальную push-сервис на локальном сетевом сервере, к которому можно получить доступ через URL-адрес HTTPS из браузеров клиентов. Ваша локальная служба push-уведомлений должна реализовывать спецификацию W3C Push API, и вы также можете искать в Интернете или на GitHub push-службу с открытым исходным кодом на выбранном вами языке.
Браузерам потребовался бы URL-адрес HTTPS, который разрешается к серверу в вашей сети через имя хоста или IP, так что, скорее всего, будут использоваться самозаверяющие сертификаты SSL. Устройствам потребуются сертификаты (или CA), которые неявно доверены или явно добавлены в качестве доверенного CA/cert.
tldr; это зависит от вашего браузера, так как его необходимо настроить на уровне браузера. По состоянию на май 2018 года кажется, что Firefox - единственный, который позволяет вам настроить URL-адрес службы. Для всех остальных вам нужен интернет для доставки push-сообщений.
В спецификации API Push за декабрь 2017 года (официальной по состоянию на май 2018 года) говорится следующее:
Термин push-сервис относится к системе, которая позволяет серверам приложений отправлять push-сообщения в веб-приложение. Push-сервис обслуживает push-конечную точку или конечные точки для push-подписок, которые он обслуживает.
Для каждого пользовательского агента существует только одна push-служба, и ее нельзя изменить по умолчанию. Это ограничение связано с рядом проблем, связанных с производительностью, включая сложность запуска надежных сервисов push-уведомлений и влияние на срок службы батареи, если существует неограниченный набор push-сервисов, к которым может подключаться устройство.
В апреле 2018 года они ослабили это требование, а в спецификации теперь можно настроить другого поставщика.
Я также рекомендую прочитать эту упрощенную версию того, как работает webpush, где основные моменты заключаются в следующем:
- Сначала веб-браузер конечного пользователя должен установить push-канал с push-сервером производителя браузера. В случае Firefox это будет сервер Mozilla, в случае Chrome - сервер Google. После этого в браузер отправляется уникальный URL-адрес конечной точки, и браузер генерирует пару открытого и закрытого ключей, которая хранится внутри браузера. Затем браузер создает открытый ключ и секрет аутентификации пользователя, используемые вашим сервером для шифрования сообщений E2E в браузере пользователя.
- Браузер отправляет открытый ключ, секретный ключ аутентификации и URL-адрес конечной точки на ваш сервер, и сервер каким-то образом сохраняет это (в базе данных, в памяти, в файле и т. Д.).
- Когда приходит время, когда сервер желает отправить push-сообщение, он извлекает сохраненную информацию о подписке push-сообщений и создает зашифрованное сообщение с открытым ключом и аутентификацией пользователя. Затем сервер связывается с URL-адресом конечной точки и сообщает ему передать некоторый контент пользовательскому агенту.
- Если все выглядит нормально, сервер push-уведомлений отправляет сообщение в браузер пользователя.