Unable To Receive The Notification In The App And Getting Errors
Solution 1:
From the previous question context I would recommend to set the page notification permissions to default and request a completely new token. Also make sure to use your vapidKey. But you already wrote that you did that. What could be the issue here is that you still have a token from the wring vapidKey and so you don't get permission to send from your app to that token.
With this code it should work:
You can see on the bottom the received message.
The html file:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Clouding</title>
<script type="module">
// Import the functions you need from the SDKs you need
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.0.2/firebase-app.js";
import { getAnalytics } from "https://www.gstatic.com/firebasejs/9.0.2/firebase-analytics.js";
import { getMessaging, getToken, onMessage } from "https://www.gstatic.com/firebasejs/9.0.2/firebase-messaging.js";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
//CHANGE HERE
const firebaseConfig = {
apiKey: "AIzaSyCADVGUqs4tNdem8OMOhDO0i3G0wjQiCB4",
authDomain: "extension-tester.firebaseapp.com",
databaseURL: "https://extension-tester.firebaseio.com",
projectId: "extension-tester",
storageBucket: "extension-tester.appspot.com",
messagingSenderId: "230563136927",
appId: "1:230563136927:web:4c789d9b12e93317cf69aa"
};
window.addEventListener("click", (e) => {
switch (e.target.id) {
case "btnPermissions":
initFirebaseMessagingRegistration();
break;
}
});
// Initialize Firebase
const app = initializeApp(firebaseConfig);
// const analytics = getAnalytics(app);
const messaging = getMessaging(app);
function initFirebaseMessagingRegistration() {
// Don't forget your vapidKey here
// CHANGE HERE
getToken(messaging, { vapidKey: "BAqU95FyfIh8ikX7gecF3fTd6vyrXpS2JU8Urvr8KpNFyzFOiiR2dHCy_TJHftplF-pXvM7ERbNkwczszx4PNPs" })
.then((t) => {
tokenElement.innerHTML = "Token is " + t;
})
.catch(function (err) {
errorElement.innerHTML = "Error: " + err;
console.log("Didn't get notification permission", err);
});
onMessage(messaging, (payload) => {
console.log("Message received. ", JSON.stringify(payload));
notificationElement.innerHTML =
notificationElement.innerHTML + " " + payload.data.notification;
});
}
</script>
</head>
<body>
<main>
<h1>Welcome to Clouding</h1>
<div id="token" style="color:lightblue" role="alert"></div>
<div id="message" style="color:lightblue" role="alert"></div>
<div id="notification" style="color:green" role="alert"></div>
<div id="error" style="color:red" role="alert"></div>
<script>
messageElement = document.getElementById("message")
tokenElement = document.getElementById("token")
notificationElement = document.getElementById("notification")
errorElement = document.getElementById("error")
</script>
<button id="btnPermissions">Enable Firebase Messaging</button>
</main>
</body>
</html>
The firebase-messaging-sw.js file:
// Give the service worker access to Firebase Messaging.// Note that you can only use Firebase Messaging here. Other Firebase libraries// are not available in the service worker.importScripts(
"https://www.gstatic.com/firebasejs/9.0.1/firebase-app-compat.js"
);
importScripts(
"https://www.gstatic.com/firebasejs/9.0.1/firebase-messaging-compat.js"
);
// Initialize the Firebase app in the service worker by passing in// your app's Firebase config object.// https://firebase.google.com/docs/web/setup#config-object//CHANGE HERE
firebase.initializeApp({
apiKey: "AIzaSyCADVGUqs4tNdem8OMOhDO0i3G0wjQiCB4",
authDomain: "extension-tester.firebaseapp.com",
databaseURL: "https://extension-tester.firebaseio.com",
projectId: "extension-tester",
storageBucket: "extension-tester.appspot.com",
messagingSenderId: "230563136927",
appId: "1:230563136927:web:4c789d9b12e93317cf69aa",
});
// Retrieve an instance of Firebase Messaging so that it can handle background// messages.const messaging = firebase.messaging();
// If you would like to customize notifications that are received in the// background (Web app is closed or not in browser focus) then you should// implement this optional method.// Keep in mind that FCM will still show notification messages automatically// and you should use data messages for custom notifications.// For more info see:// https://firebase.google.com/docs/cloud-messaging/concept-options
messaging.onBackgroundMessage(function (payload) {
console.log(
"[firebase-messaging-sw.js] Received background message ",
payload
);
// Customize notification hereconst notificationTitle = "Background Message Title";
const notificationOptions = {
body: "Background Message body.",
icon: "/firebase-logo.png",
};
self.registration.showNotification(notificationTitle, notificationOptions);
});
It is extremely importand that you change the firebase configs in both files and the vapiKey. Then remove all permissions for notifications where you have hosted your project.
Unregister the curren Firebase SW as he might be corrupted and stuck:

Also pls use serve for the local hosting. After that open your side press the button and copy the token here:
After sending your message you won't see a notification because we are handling it on y custom way so you will only see a log like in the first picture.

Post a Comment for "Unable To Receive The Notification In The App And Getting Errors"