【问题标题】:Chrome Push Notifications: send invisible pushChrome 推送通知:发送隐形推送
【发布时间】:2016-04-07 10:15:20
【问题描述】:

我不仅想发送带有消息的推送(通过 fetch),有时还想发送不可见的推送(即根本不显示通知),只是为了检查仍有多少用户订阅以及他们接收推送的速度。

我试过这段代码。它似乎有效,但在某些设备上,我收到“此站点已在后台更新”消息,这令人困惑。

self.addEventListener('push', function(event) {
    event.waitUntil(
        fetch(my_awesome_url)
        .then(function(response) {
            if (response.status !== 200) {
                throw new Error('Server code: ' + response.status);
            }

            return response.json().then(function(data) {
                if (typeof data.data !== 'object') return; // invisible push, show nothing
                var notificationData = {
                    body: data.content,
                    data: data.data,
                    tag: data.id || Math.random(),
                    icon: typeof data.data == 'object' ? data.data.image : ''
                };

                return self.registration.showNotification(data.title, notificationData);
            });
        })
        .catch(function (err) {
        })
    );
});

我怎样才能真正阻止浏览器显示任何内容?

【问题讨论】:

    标签: google-chrome push-notification web-push push-api


    【解决方案1】:

    你不能。

    在您的客户端代码中,您必须编写以下行:

    subscribe({userVisibleOnly: true});
    

    这是因为浏览器支持您显示消息的推送通知。

    在必须发送消息之前不要尝试发送消息,然后捕获错误订阅的错误响应。

    这个问题有一个很好的答案,这里有更多细节:Google Chrome Silent Push Notifications

    【讨论】:

    • Firefox 允许发送 一些 没有用户可见效果的通知,它有一些启发式方法来避免网站滥用该功能。您可以在这里进行一些实验:serviceworke.rs/push-quota.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2012-02-01
    • 1970-01-01
    • 2019-03-18
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多