网络推送 201 但在设备上看不到通知

Posted

技术标签:

【中文标题】网络推送 201 但在设备上看不到通知【英文标题】:Web push 201 but can't see notification on device 【发布时间】:2017-11-02 12:47:49 【问题描述】:

我关注Google's guide 在 Chrome 上发送推送通知。我在 Node 上设置了一个服务器来发送推送通知。在通过向我的服务器端点发出 POST 请求来实际发送推送通知时,我收到一个 201 表明一切正常,但我在浏览器上看不到实际通知。

webpush.sendNotification(subscriptions[0], "'notification': 'title': 'my title','body': 'my body',", TTL: 60)
    .catch((err) => 
        console.log(err);
        res.json( message: 'an error occurred' );
    )
    .then(function(success) 
        res.json( message: 'sent a push...' );
        console.log('sent push successfully.');
        console.log(success);
    );

这是我得到的回复:

statusCode: 201,
body: '',
headers: 
    'content-type': 'text/plain',
    location: 'https://fcm.googleapis.com/fcm/...',
    date: 'Thu, 02 Nov 2017 12:31:10 GMT',
    expires: 'Thu, 02 Nov 2017 12:31:10 GMT',
    'cache-control': 'private, max-age=0',
    'x-content-type-options': 'nosniff',
    'x-frame-options': 'SAMEORIGIN',
    'x-xss-protection': '1; mode=block',
    'content-length': '0',
    server: 'GSE',
    'alt-svc': 'quic=":443"; ma=2592000; v="41,39,38,37,35"',
    connection: 'close'

如果用户未订阅,或者授权密钥已关闭,我会收到 400 错误 - 所以我知道其他一切都应该(显然)按顺序进行。怎么了?

【问题讨论】:

【参考方案1】:

搞定了!我在 Firefox 中用我的 service worker 代码尝试了同样的东西(确保你正确地调用了 showNotification!),一切都很好。

self.addEventListener('push', function(event) 

    var myNotif = event.data.json();
    const promiseChain = self.registration.showNotification(myNotif.title);

    event.waitUntil(promiseChain);
);

对服务工作者文件的任何更改都会在重新打开页面后传播。 很挑剔,但代码中并没有什么不寻常的地方。在 Chrome 和 Firefox 上工作就像一个魅力。

【讨论】:

以上是关于网络推送 201 但在设备上看不到通知的主要内容,如果未能解决你的问题,请参考以下文章

C# 推送通知在模拟器上工作但在真实设备上不工作

Worklight 6.2:成功发送标签推送通知,但在 android 设备上未收到

通过cURL / PHP发送时,设备上未收到Firebase通知

Windows phone 8 推送通知空通道 uri

推送通知未在设备上接收

限制向设备发送推送通知