寻找简单的解决方案firebase权限并发送

时间:2020-03-26 19:42:56

标签: javascript firebase firebase-cloud-messaging

我正在努力寻找一种在没有第三方公司且不使用react或node.js的情况下在Web应用程序上集成推送通知的方法。

尝试使用Firebase。一种简单的方式来请求许可,而不会在用户登陆网站时骚扰用户。我想通过单击链接来询问用户何时请求许可。

是的,它运行良好(在firebase中找不到设备令牌吗?),但是当我使用firebase控制台发送通知时。该消息已在网站控制台中成功接收,但是没有出现通知弹出窗口。但是,如果我立即触发询问用户的消息。它正在工作。

我只需要延迟提示,并使用邮递员或curl来向所有订阅者发送通知的简单方法就可以了。它适用于Firebase控制台中的所有用户,但我在查看谁会收到通知而未看到订阅令牌时遇到问题?

我在index.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({}) 常量消息传递= 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);
});

0 个答案:

没有答案