Подтвердить что ты не робот

Уведомление о Chrome Push: этот сайт обновлен в фоновом режиме

При внедрении уведомления об обновлении chrome мы получили последнее изменение с нашего сервера. При этом сервис-работник показывает дополнительное уведомление с сообщением

Этот сайт обновлен в фоновом режиме

Уже пробовал с предложением, размещенным здесь https://disqus.com/home/discussion/html5rocks/push_notifications_on_the_open_web/
Но до сих пор не удалось найти ничего полезного. Есть ли какие-либо предложения?

4b9b3361

Ответ 1

Обычно, как только вы получаете push-сообщение от GCM (Google Cloud Messaging), вы должны показывать push-уведомление в браузере. Об этом говорится в 3-м пункте здесь:

https://developers.google.com/web/updates/2015/03/push-notificatons-on-the-open-web#what-are-the-limitations-of-push-messaging-in-chrome-42

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

Ответ 2

Я рассказывал об одной и той же проблеме, но после долгих исследований я узнал, что это связано с задержкой между событием PUSH и self.registration.showNotification(). Я только пропустил ключевое слово return перед self.registration.showNotification()

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

var APILINK = "https://xxxx.com";
 self.addEventListener('push', function(event) {
      event.waitUntil(
          fetch(APILINK).then(function(response) {

        return response.json().then(function(data) {
                  console.log(data);
                  var title = data.title;
                  var body = data.message;
                  var icon = data.image;
                  var tag = 'temp-tag';
                  var urlOpen = data.URL;

                return  self.registration.showNotification(title, {
                      body: body,
                      icon: icon,
                      tag: tag
                  })
              });
          })
      );
  });

Ответ 3

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

  • Вы не показываете уведомление в ответ на push сообщение. Каждый раз, когда вы получаете push-сообщение на устройстве, когда вы завершаете обработку события, уведомление должно оставаться видимым на Устройство. Это связано с подпиской на опцию userVisibleOnly: true (хотя обратите внимание, что это необязательно, и не устанавливайте ее приведет к сбою подписки.
  • Вы не вызываете event.waitUntil() в ответ на обработку события. В эту функцию следует передать обещание, чтобы указать браузеру, что он должен дождаться обещания, прежде чем проверять, осталось ли уведомление.
  • По какой-то причине вы разрешаете обещание, переданное event.waitUntil, прежде чем будет показано уведомление. Обратите внимание, что self.registration.showNotification является обещанием и асинхронным, поэтому вы должны быть уверены, что оно разрешилось до того, как решение, переданное в event.waitUntil, будет разрешено.