我在客户端使用Vue js,在后端使用node js。我正在发送数据消息,当浏览器的选项卡处于非活动状态时,它已被客户端接收。但是当选项卡处于活动状态时,它不会收到通知。
这是我在客户端的代码
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "<apiKey>",authDomain: "<authDomain>",databaseURL: "<db>",projectId: "<projectId>",storageBucket: "<storageBucket>",messagingSenderId: "<senderId>",appId: "<appId>"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
// Retrieve Firebase Messaging object.
const messaging = firebase.messaging();
messaging.usePublicVapidKey(
"<KEY>"
);
messaging
.requestPermission()
.then(function() {
retrieveToken();
console.log("Notification permission granted.");
})
.catch(function(err) {
console.log("Unable to get permission to notify. ",err);
});
function retrieveToken() {
messaging
.getToken()
.then(devicetoken => {
if (devicetoken) {
console.log(devicetoken);
messaging.onmessage(payload => {
console.log("Message received. ",payload);
});
} else {
console.log(
"No Instance ID token available. Request permission to generate one."
);
}
})
.catch(err => {
console.log("An error occurred while retrieving token. ",err);
});
}
}
</script>
这是我的服务器端代码
var message = {
data: {
score: "850",time: "2:45"
},token: registrationToken
};
// Send a message to the device corresponding to the provided
// registration token.
admin
.messaging()
.send(message)
.then(response => {
// Response is a message ID string.
console.log("Successfully sent message:",response);
})
.catch(error => {
console.log("Error sending message:",error);
});