Push API получает конечную точку от пользователя
Я использую веб-уведомления для информирования моих пользователей об изменениях на моем веб-сайте. Они работают до тех пор, пока сайт загружен, поэтому теперь я хочу сделать следующий шаг и использовать push API для отображения уведомлений, даже если мой сайт не загружен. Там нет приложения, только веб-сайт, было бы достаточно, если бы он работал только в Chrome, и сообщения не должны быть сохранены, если браузер пользователя в настоящее время закрыт.
Я следую за этим ответом. Как веб-приложение может отправлять push-уведомления на устройства iOS? но я застрял на шаге 2 "вы можете прочитать токен устройства (конечную точку), который должен быть отправлен на сервер и сохранен".
Мое понимание конечной точки заключается в следующем:
- пользователь и его производитель браузера генерируют токен и URL.
- Почему-то я получаю этот URL и сохраняю его на своем сервере.
- Любой, кто знает этот URL-адрес, может отправлять на него push-события, поэтому соединение между пользователем и моим веб-сайтом должно быть зашифровано, чтобы никто не смог его перехватить.
- Когда я хочу отправить уведомление пользователю, я отправляю запрос на его соответствующий URL-адрес, производитель браузера пересылает его пользователю, и пользователь выполняет код javascript от работника службы.
Я старался
navigator.serviceWorker.ready.then(function(reg) {
reg.pushManager.subscribe({userVisibleOnly: true}).then(function(subscription) {
console.log(subscription.endpoint);
})
})
но получаю сообщение об ошибке "Uncaught (в обещании) DOMException: Регистрация не удалась - отсутствует applicationServerKey, и манифест пуст или отсутствует", что понятно, поскольку нет файла manifest.json. Однако я не вижу, как я участвую в процессе создания токена, кроме включения SSL, чтобы пользователь мог безопасно отправить мне конечную точку.
Я также взглянул на https://serviceworke.rs/push-subscription-management_index_doc.html но я не совсем уверен, что это то, что мне нужно.