Web通知可以像推送通知服务一样工作吗?

时间:2013-11-15 08:27:59

标签: html5 push-notification apple-push-notifications google-cloud-messaging

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

网站是否可能将通知消息推送到未启动的Web浏览器(在移动设备上)?我知道MAC上的Safari可以通过APN实现。 HTML5网络通知怎么样?它可以涵盖推送通知解决方案的整个部分吗? (iOS上的APN,Android上的GCM)

3 个答案:

答案 0 :(得分:1)

是的,几乎可以将通知从网站推送到网络浏览器, 您可以利用客户端的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');
    }
}

服务器端-

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

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);

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

PushNotification

答案 1 :(得分:0)

如果您可以允许您的应用程序在后台运行而不会终止,您可以连续轮询服务器以获取通知..但是如果您的应用程序未启动或未运行,则在没有APN的情况下,由于Apple推送通知服务器是允许的,因此不可能将通知发送到用于特定应用的设备的通知中心..

答案 2 :(得分:0)

我发现这三篇文章是我的问题的答案。

  1. 可以为睡眠网络浏览器提供推送通知。 FireFox OS已经做到了。 FF Push Service
  2. Web Push服务的参考文档和W3C标准在这里。但是,没有针对服务器的规范。服务器实现取决于浏览器制造商。 FireFox OS Simple Push API W3C Push API