FCM Web仅接收数据并隐藏通知部分或禁用



我正在尝试将数据表格发送到FCM,以便可以在网页的特定部分中显示。例如,这就像库存应用程序,其中数据不断更新。以同样的方式试图实现。到目前为止,我已经将其配置为从FCM接收数据,并且正在接收。但是问题在于它显示了喜欢的通知。我的同事正在研究同一个,可以选择将数据发送到Android应用程序,并显示要显示的隐藏通知。同样,我想在网上听到它,但无法做到。

(function () {
    // Initialize Firebase
    var config = {
        apiKey: "xxxxxxxxxxxxxx",
        authDomain: "test-xxxxxxxx.xxxxxxxx.com",
        databaseURL: "https://xxxxxx-xxxxxxxx.firebaseio.com",
        projectId: "xxx-469e9",
        storageBucket: "",
        messagingSenderId: "xxxxxx"
    };
    firebase.initializeApp(config);
    // Retrieve Firebase Messaging object.
    const messaging = firebase.messaging();
    messaging.requestPermission()
    .then(function() {
        console.log('Notification permission granted.');
        return messaging.getToken();
    })
    .then(function(token) {
        console.log(token);
    })
    .catch(function(err) {
        console.log('Unable to get permission to notify.', err);
    })
    messaging.onMessage(function(payload) {
        console.log("Message received. ", payload);
        // ...
    });
}());

在firebase-messaging-sw.js

importScripts('https://www.gstatic.com/firebasejs/4.3.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/4.3.1/firebase-messaging.js');
// Initialize Firebase
var config = {
    apiKey: "xxxxxx",
    authDomain: "xxxx-xxxxxxxxxx.com",
    databaseURL: "https://xxx-xxx.firebaseio.com",
    projectId: "xxxx-xxxxxxxxxx",
    storageBucket: "",
    messagingSenderId: "xxxxxxxxxxxx"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();

hack将在...

之后关闭通知
messaging.setBackgroundMessageHandler(function (payload) {
    var realPush = true;
    if(realPush)
    {
        const notificationOptions = {
            body: "It is a REAL push",
            data:"true"
        };
        //We display the notification
        return  self.registration.showNotification(title, notificationOptions);
    }else
    {
        const notificationOptions = {
            body: "It is a SILENT push",
            data:"false"
        };
        //We display a fake notification
        return self.registration.showNotification('To delete',notificationOptions).then(function () {
            self.registration.getNotifications().then(notifications => {
                console.log(notifications);
                for (var i =0;i<notifications.length;i++)
                {
                    if(notifications[i].data != "true")
                    {
                        //then we destroy the fake notification immedialtely !
                        notifications[i].close();
                    }
                }
            })
        });
    }
});

RealPush参数当然是由您自己管理的

最新更新