Google Chrome Тихие Уведомления Толчка

Я читал документы для реализации Chrome веб-Push API здесь, и я заметил, что API говорит: "Вы обещаете показывать уведомление, когда вы получаете толчок" , и под ограничениями указано " вы есть чтобы показать уведомление при получении push-сообщения".

после реализации примера на моем localhost я использовал cURL для успешной отправки push-уведомления. Мне было любопытно, поэтому я прокомментировал строки, которые фактически вызовите функцию showNotification и поместите в консоль.вместо этого войдите в систему и обнаружите, что я могу отправлять, получать и полностью игнорировать push-уведомление. Я даже попытался использовать if-оператор, чтобы контролировать, показывать ли их на основе глобального булева, который я контролировал с моей главной страницы, и это сработало. Поэтому мне было интересно, знал ли кто-нибудь, что они имели в виду, говоря, что вам нужно показать уведомление, и что тихие уведомления толчка были недоступны?

Это не было просто для этого, я законно могу контролировать, показывать ли эти уведомления в моем веб-приложении, поэтому было бы здорово, если бы это было возможно. Код ниже, Если вам интересно.

self.addEventListener('push', function(event) {
  var title = 'New Message';
  var body = 'You have received a new message!';
  var icon = '/img/favicon.png';
  var tag = 'well-notification';
  console.log("DID RECEIVE NOTIFICATION")

  if(settingsShowNotification) {
    event.waitUntil(
      self.registration.showNotification(title, {
         body: body,
         icon: icon,
         tag: tag
      })
    );
  }
});

EDIT: в Chrome 47, Если это актуально.

UPDATE: после дальнейших экспериментов я обнаружил очевидную проблему, что я не могу обновить исходную глобальную переменную, как только пользователь переходит, а затем повторно переходит на ту же страницу. Тем не менее, я смог обходите это, используя переменную на самом serviceworker и отправляя сообщение работнику службы с помощью описанного API здесь для переключения логического значения showNotifications.

1 ответов


вам нужно показать уведомление, и если вы не показываете уведомление, Вы получаете принудительное уведомление из браузера, говорящее: "этот сайт был обновлен в фоновом режиме". Но требования, которые показывают страшное сообщение, были немного смягчены:

по состоянию на Января. '16, похоже, что до последних 10 уведомлений проверяются на наличие каждого уведомления или нет. Если одно уведомление в последних десяти уведомленияхне показать уведомление, это считается несчастным случаем, и браузер не покажет страшный "этот сайт был обновлен в фоновом режиме". Вы должны пропустить два уведомления в последних десяти страшного сообщения.

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

Chromium ошибка, которая отслеживает реализацию:https://code.google.com/p/chromium/issues/detail?id=437277

соответствующие строки исходного кода: https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/push_messaging/push_messaging_notification_manager.cc&l=249