Web推送通知有效负载数据为空

时间:2016-08-17 08:50:11

标签: python push-notification service-worker payload web-push

您好我正在尝试为web i实施网络推送通知,遵循以下example,除了我使用python脚本连接到gcm / fcm并生成有效负载的服务器部分.i获取推送事件但event.data为空。

from datetime import datetime
from pyfcm import FCMNotification
pushService = FCMNotification(api_key ='xxx'}
registrationId=""
messageTitle = "New update available"
messageBody ="some message"
dryRun = False
extraData = {}
extraData['title'] = "nknkn"

sw.js

self.addEventListener('push',function(e){

console.log('Push Message Recevied',e.data);
var title = 'Push message';
e.waitUntil(
    self.registration.showNotification(title, {
        body: 'The Message form data',
        icon: 'icon.jpg',
        tag: 'my-tag'
    }));
});

1 个答案:

答案 0 :(得分:1)

Google Chrome和Mozilla Firefox目前都支持推送消息的有效负载,请参阅MDN上的PushMessageData。但根据Push API规范,任何有效负载必须加密,否则浏览器将丢弃它并返回 null (参见11.1.6):

  

如果推送消息因任何原因无法解密,或者未加密且包含任何有效负载,则丢弃该消息并终止此过程。如果推送消息不包含任何内容,则该消息可能为空,但是对于未使用与推送订阅关联的密钥对未成功解密的推送消息,不得触发推送事件。

以下是来自Google Developers的精彩文章,其中详细介绍了这些文章:Web Push Payload Encryption。和Message Encryption for Web Push的原始草稿。

我还建议您查看不同语言的WebPush已实现的库集:web-push-libs。你也可以找到一个用Python编写的lib。另一个关于Java的lib,可以将带有负载的推送消息发送到Chrome和Firefox:https://github.com/MartijnDwars/web-push