调用register函数时,我正在使用FCM Web通知服务:
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/sw.js').then(function(registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err) {
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
});
}
Run Code Online (Sandbox Code Playgroud)
服务工作者被注册两次,一次是由于此功能,一次是通过FCM脚本注册。这是我的服务人员代码:
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js');
'messagingSenderId': '<my senderid>'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function (payload) {
self.addEventListener('notificationclick', function (event) {
event.notification.close();
var promise = new Promise(function (resolve) {
setTimeout(resolve, 1000);
}).then(function () {
return clients.openWindow(payload.data.locator);
});
event.waitUntil(promise);
});
var notificationTitle = payload.data.title;
var …Run Code Online (Sandbox Code Playgroud) javascript web-notifications firebase service-worker firebase-cloud-messaging
我的问题是与(问题)类似但有些不同的问题.我正在使用FCM Admin SDK,但仍然没有看到为Web推送通知发送click_action属性的选项.我也检查了admin.messaging.NotificationMessagePayload,但看起来这只适用于Android和iOS.
根据上述问题中的评论,此click_action不适用于使用http v1 API进行网络推送(我认为FCM管理员SDK也是如此)
请帮我介绍如何使用FCM Admin SDK发送web推送通知的click_action属性.如果还有其他解决方法,那也会有所帮助.
提前致谢.
我想拦截HTML5 Web通知。我已经阅读了以下答案,其中用户建议可以window.Notification用您自己的充当代理的对象覆盖该对象。我试图这样做,但是无法使其正常工作。以下是页面加载后我要注入的JavaScript代码:
function setNotificationCallback(callback) {
const OldNotify = window.Notification;
OldNotify.requestPermission();
const newNotify = (title, opt) => {
callback(title, opt);
return new OldNotify(title, opt);
};
newNotify.requestPermission = OldNotify.requestPermission.bind(OldNotify);
Object.defineProperty(newNotify, 'permission', {
get: () => {
return OldNotify.permission;
}
});
window.Notification = newNotify;
}
function notifyCallback(title, opt) {
console.log("title", title); // this never gets called
}
window.Notification.requestPermission(function (permission) {
if (permission === "granted") {
setNotificationCallback(notifyCallback);
}
})
Run Code Online (Sandbox Code Playgroud) 我有一个 Service Worker 创建一个 Websocket 来监听通知,并且工作正常。我的问题是,当我尝试显示通知时,我无法显示。这是代码
function displayNotification(title, body, tag, url, actions) {
if (Notification.permission == "granted") {
if (title == undefined || title == null || title == "") title = "My site"
if (body == undefined || body == null) body = ""
if (tag == undefined || tag == "") tag = null
if (url == undefined || url == null || url == "") url = "https://example.com/"
if (actions == undefined || actions == null || …Run Code Online (Sandbox Code Playgroud) 我正在使用HTML5 Notification API在新内容可用时显示消息.我想显示浏览器选项卡,该选项卡会在用户单击邮件时激活通知,但我无法找到API来执行此操作.我确实找到了Page Visibility API,但它似乎只在标签更改时发送事件,而不允许我激活标签.
是否可以像这样控制浏览器,还是根本不允许?
那么,是否可以在没有SSL证书的情况下为Chrome实施网络通知?我想避免在我的网站上安装SSL,如果有一种方法可以在没有Service Worker的情况下发送通知,那将会很酷.
好吧,制作应用程序的一个小想法贯穿我的脑海.但这是我第一次尝试申请.到目前为止,我已经开始使用PHP,C++,Ruby和Rails框架工作,但都处于初级阶段.
如果我的想法如此要求,我准备采取更大的飞跃并广泛学习它们.要求是Web应用程序为您提供桌面通知.我已经看到Gmail聊天框发生了这种情况.我需要知道的是,什么是正确的工具开始?PHP走得那么远吗?或者在Rails上工作会是更好的选择吗?另外,普通的初级程序员是否可以做这样的事情?制作这样的应用程序需要做些什么?
网页中的Javascript(不是Chrome应用或扩展程序)可以创建Chrome桌面通知,并设置在单击通知时要打开的URL.
var notification = new Notification('Notification title', {
icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
body: "Hey there! You've been notified!"
});
notification.onclick = function () {
window.open("http://stackoverflow.com/a/13328397/1269037");
}
Run Code Online (Sandbox Code Playgroud)
是否可以创建一个通知,单击何时打开创建该通知的选项卡?
我正在 Rails 5 中创建新应用程序。我想使用 Web 推送通知。我没有找到任何可以帮助我处理网络推送通知的文档。
任何帮助将是可观的。提前致谢。
Chrome Version 59.0.3071.109 (Official Build) (64-bit)(至少在 OSX 上)的行为与 58 不同,因为在隐身会话中,通过浏览器通知 API 请求权限的调用不会向用户显示权限请求弹出窗口;相反,它会自动静默地将权限设置为defaultto blocked。
此外,在 URL 栏旁边的正常内容设置 UI 中,“通知权限”选项下拉列表中缺少“始终允许在此站点上”选项。
如何在 Chrome v59 中允许某些内容(如通知)专门用于隐身会话?