【问题标题】:Can Web Notification works like push notification service?Web Notification 可以像推送通知服务一样工作吗?
【发布时间】:2013-11-15 08:27:59
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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# 库实现之一的 sn-p-

    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

    【讨论】:

    • 您现在可以查看 trincot。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-07-30
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        • 2014-12-31
        • 2018-09-27
        • 2012-02-01
        • 2017-12-09
        • 1970-01-01
        相关资源
        最近更新 更多