eveness / web-push-api

О браузерных уведомлениях при помощи Push API
49 stars 10 forks source link

Может обновите информация для FCM? #2

Open gibigate opened 5 years ago

gibigate commented 5 years ago

В частности хотелось бы узнать, как отправлять badge, image (не icon) и action кнопки для WEB Push

sanchezzzhak commented 5 years ago

https://developers.google.com/web/fundamentals/push-notifications/display-a-notification https://web-push-book.gauntface.com/demos/notification-examples/

смотрите доку и примеры, параметры добавлять нужно в эту функцию

self.registration.showNotification в виде json объекта 2 аргументом.

self.addEventListener('push', function(event) {
  console.log('Получено push-сообщение', event);
  var data  = event.data.json();  // json данные, которые отправили в из php скрипта ( они могут быть любыми, главное json ).

  var title = 'Ура, работает!';
  var body = 'Было получено сообщение от сайта.';
  var icon = '/icon-192x192.png';
  var tag = 'simple-push-demo-notification-tag';

  event.waitUntil( 
    self.registration.showNotification(title, { 
      body: body,
      icon: icon,
      tag: tag
    })
  );
});
gibigate commented 5 years ago

У меня подключен fcm с дефолтными jsками, через пхп я отправляю такое:

$opts['postDataJson']['notification'] = array(
        'title' => $push['title'],
        'body' => $push['description'],
        'icon' => $config['firebase_files'].$push['icon'],
        'badge' => $config['firebase_files'].$push['badge'],
        'image' => $config['firebase_files'].$push['image'],
        'vibrate' => $push['vibrate'],
        'requireInteraction' => $push['interaction']>0 ? 'true' : 'false',
        'click_action' => 'URL/push.php?action=redirect&id='.$push['id'].'&subid='.$push['last_id'],
    );

Иконка показывается, а badge и image не работает, мне нужно отредактировать скрипт firebase-messaging-sw.js?

Содержимое:

// firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-messaging.js');

firebase.initializeApp({
    messagingSenderId: '1111111111111'
});

const messaging = firebase.messaging();