Я работаю над поиском способа интеграции уведомлений 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);
});