我想知道 Web Push 背后是什么技术,例如 https://goroost.com
这是如何运作的?如何为 Web Push 配置我的服务器?我应该看什么?
我使用 Google Firebase 服务在我的网站上实现了网络推送通知。firebase.google.com/docs/cloud-messaging/js/client
我测试了它并且一切正常,但是当我的网站窗口没有聚焦(它在后台)或关闭时,如果我收到推送通知,它会在 20 秒后消失。
在我的https://hdlava.me/j/firebase_subscribe.js文件中,我添加了
requireInteraction: true
Run Code Online (Sandbox Code Playgroud)
在messages.onMessage 中标记,所以如果我在我的网站打开时收到推送消息,该消息不会消失,直到我点击它。
我试着添加这个
requireInteraction: true
Run Code Online (Sandbox Code Playgroud)
在我的https://hdlava.me/firebase-messaging-sw.js中的 messages.setBackgroundMessageHandler 中,但它不起作用。甚至:
console.log('[firebase-messaging-sw.js] Received background message ', payload)
Run Code Online (Sandbox Code Playgroud)
不起作用。看起来整个 messages.setBackgroundMessageHandler 不起作用。
有人可以帮我弄清楚是什么问题吗?另外,如果我在 firebase-messaging-sw.js 中使用
self.addEventListener("push",function(event)
相反messaging.setBackgroundMessageHandler,我一次有两个消息。第一条消息消失,第二条消息没有,但第二条消息不可点击。是否可以阻止第一条消息并使第二条消息可点击?
我的 chrome 推送通知在浏览器选项卡打开时有效,但在关闭时无效。据我所知,即使选项卡关闭,通知也应该出现。
我已确认该网站允许通知
如何调试选项卡关闭时推送通知不起作用的原因?
顺便说一句,我在 mac 上。
火狐 62.0.2(64 位)。视窗 7 x64。从编写代码这在我们网站的火力点的消息,sw.js:
self.addEventListener('notificationclick', event => {
event.waitUntil(async function() {
throw "1";//this line for debug only
}());
});
Run Code Online (Sandbox Code Playgroud)
代码在 Firefox 中的 event.waitUntil() 中引发异常“InvalidStateError:尝试使用不可用或不再可用的对象”。在 Chrome 中正常工作。为什么?我该如何解决?
PS我正在寻找第二天的答案。:(
如何使用googles GCM服务在浏览器中实现推送通知.实现相同的步骤是什么.
firefox google-chrome google-cloud-messaging web-push push-api
此代码段有助于将应用程序选项卡置于焦点或使用该URL打开新选项卡.如果选项卡已打开,是否可以更改URL(基于用户单击的通知).
event.waitUntil(
clients.matchAll({
type: 'window'
})
.then(function(windowClients) {
for (var i = 0; i < windowClients.length; i++) {
var client = windowClients[i];
if (url.test(client.url) && 'focus' in client) {
return client.focus();
}
}
if (clients.openWindow) {
return clients.openWindow('/#/chat');
}
})
);
Run Code Online (Sandbox Code Playgroud) 我要说明的是使用Web推送通知;我不知道在哪里可以找到auth密钥:
var pushSubscription = {
endpoint: '< Push Subscription URL >',
keys: {
p256dh: '< User Public Encryption Key >',
auth: '< ???? User Auth Secret ???? >'
}
};
Run Code Online (Sandbox Code Playgroud)
我能得到endpoint并且p256dh从ServiceWorker>registeration.pushManager.getSubscription()但不是auth主要的。
谢谢
我self.addEventListener('notificationclick', function(event) {})在我的服务人员中使用来监听通知的点击
触发 notificationclick 事件以指示已单击由 ServiceWorkerRegistration.showNotification() 生成的系统通知。
当我使用ServiceWorkerRegistration.showNotification并单击通知时,它会触发侦听器,但是当我有一个远程通知时,它不会触发,我必须actions从服务器进行设置,并且如果用户单击它触发的操作按钮,但如果单击通知本身,则不会触发
有什么解决方法吗?
javascript notifications push-notification web-worker web-push
我第一次使用信号.我已经花了太多时间研发.但产量几乎为零.所以我在这里遵循我的要求.
我已成功开发了信号演示.但它与用户无关.如果我触发通知,则所有设备都会收到通知.所以这是我的问题.
如果有人能告诉我基本的例子,我们将不胜感激.我来自PHP方面.如果我从PHP开发人员的视图中得到答案,那将对我有好处.我已经在stackoverflow上问了这个问题.但答案来自Android视图.但我认为他不知道在服务器端,我们必须管理所有设备.所以我从那个答案中得不到更多.
web-push ×9
javascript ×4
firefox ×2
push-api ×2
laravel ×1
macos ×1
onesignal ×1
php ×1
web ×1
web-worker ×1