0

我检查了 W3C Web Notification 标准文档。但是,我找不到服务器端规范。而且,我仍然不明白它可以唤醒网络浏览器。我的理解是,当用户在网站上时,网络通知可以在浏览器上绘制一个通知框。

如果可能,网站是否将通知消息推送到未启动的网络浏览器(在移动设备上)?我知道 MAC 上的 Safari 可以通过 APNs 做到这一点。HTML5 网络通知怎么样?它可以覆盖推送通知解决方案的全部吗?(iOS 上的 APN,Android 上的 GCM)

4

3 回答 3

1

是的,它几乎可以将通知从网站推送到 Web 浏览器,您可以利用客户端 Java 脚本进行用户同意和注册,并利用服务器端进程将通知推送给基于某些业务事件的用户。

客户端 - 注册你的服务工作者(大多数现代浏览器都支持它 -

Notification.requestPermission().then(function (status) {
        if (status === 'denied') {
        \\You can add logging here
        }
        else if (status === 'granted') {
          initialiseServiceWorker();
        }
}
function initialiseServiceWorker() {
    navigator.serviceWorker.register('serviceWorker.js', { scope: './' })
        .then(handleSWRegistration)
        .catch(function (err) {
            console.log('[initialiseServiceWorker] : req.register serviceWorker unable to get serviceWorker file.', err);
        });
};

function handleSWRegistration(event) {
    if (event.installing) {
        console.log('[handleSWRegistration] : Service worker installing');
    } else if (event.waiting) {
        console.log('[handleSWRegistration] : Service worker installed');
    } else if (event.active) {
        console.log('[handleSWRegistration] : Service worker active');
    }
}

服务器端-

您可以使用来自 C# 库实现之一的片段下面的任何服务器端实现GitHub Nuget -

var vapidDetails = new VapidDetails("mailto:abcw@abc.com", _vapidPublicKey, _vapidPrivateKey);
var pushSubscription = new PushSubscription(PushEndpoint, PushP256DH, PushAuth);

var payLoad = new
                {
                    message = $"Hello from Notification.",
                    title = "Notification!"
                };
string strPayload = JsonConvert.SerializeObject(payLoad);

webPushClient.SendNotification(pushSubscription, strPayload, options);

您可以参考此链接了解架构流程-

推送通知

于 2019-03-12T15:51:22.703 回答
0

我找到了这三篇文章来回答我的问题。

  1. 可以为休眠的网络浏览器推送通知。FireFox OS 已经做到了。 FF推送服务
  2. Web Push 服务的参考文档和 W3C 标准在这里。但是,服务器没有规范。服务器实现取决于浏览器制造商。 FireFox OS 简单推送 API W3C 推送 API
于 2013-11-19T01:55:02.087 回答
0

如果您可以允许您的应用程序在不终止的情况下在后台运行,您可以连续轮询服务器以获取通知。但是如果您的应用程序没有启动或在这种情况下没有运行,那么没有 APN 是不可能的,因为 Apple 推送通知服务器可以提供通知用于特定应用程序的设备的通知中心。

于 2013-11-15T08:33:54.033 回答