Ищем простое решение firebase разрешения и отправки - PullRequest
0 голосов
/ 26 марта 2020

Я работаю над поиском способа интеграции уведомлений pu sh в веб-приложение без сторонней компании и без использования реакции или узлов. js.

Попытка использовать базу огня. Простой способ запросить разрешение, не беспокоя пользователей, когда они попадают на сайт. Я хочу, чтобы разрешение было спрашивать, когда пользователь запрашивает его, нажав на ссылку.

Да, он работает хорошо (не могу найти токен устройства в firebase?), Но когда я отправляю уведомление с помощью консоли firebase. Сообщение успешно получено в консоли сайта, но всплывающее уведомление не появляется. Но если я активирую messaging.requestPermission (), сразу спрашиваю пользователя. Это работает.

Мне просто нужно отложить запрос и простой способ отправить всем подписчикам уведомление с помощью почтальона или скручивания. Он работает для всех пользователей в консоли Firebase, но у меня проблема с тем, кто получит уведомление, не видя токены подписки?

У меня есть это в моем индексе. php:

if ('Notification' in window && 'serviceWorker' in navigator) {


    var enableNotificationsButtons = document.querySelectorAll('#push-button-js');
    for (var i = 0; i < enableNotificationsButtons.length; i++) {
        enableNotificationsButtons[i].style.display = 'inline-block';
        enableNotificationsButtons[i].style.visibility = 'visible';
        enableNotificationsButtons[i].style.WebkitTransition = 'visibility 1s , opacity 1s';
        enableNotificationsButtons[i].addEventListener('click', askForNotificationPermission);
    }

    function askForNotificationPermission() {

        messaging.requestPermission()
        .then(() => {

        console.log("Notifications allowed");
        return messaging.getToken();

        })

        .catch(err => {

        console.log("No permission to send push", err);
        });

    }

 var firebaseConfig = {
        apiKey: "AIzaxxxgg",
        authDomain: "pxxxx.firebaseapp.com",
        databaseURL: "https://puxx.firebaseio.com",
        projectId: "xxx",
        storageBucket: "xxx.appspot.com",
        messagingSenderId: "37xxx3",
        appId: "1:371xxxxxxxxx0e",
        measurementId: "G-XxxxxxxxW"
    };

    firebase.initializeApp(firebaseConfig);

    console.log(firebaseConfig);
    console.log(firebase);
    const messaging = firebase.messaging();

    messaging.usePublicVapidKey('BXXXXXXX');



    messaging.onMessage(function(payload) {
        console.log('onMessage: ', payload);
    });

И на firebase-messaging-sw. js тот же firebase.initializeApp ({}) const messaging = firebase.messaging ();

messaging.setBackgroundMessageHandler(function(payload) {
  console.log('[firebase-messaging-sw.js] Received background message ', payload);
  const notificationTitle = 'Background Message Title';
  const notificationOptions = {
    body: 'Background Message body.',
    icon: 'https://swphp.punchunique.com/android-chrome-192x192.png'
  };


  return self.registration.showNotification(notificationTitle,
      notificationOptions);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...