Django 浏览器未接收到Firebase消息

Django 浏览器未接收到Firebase消息,django,firebase,firebase-cloud-messaging,Django,Firebase,Firebase Cloud Messaging,我有一个Django项目,在该项目中,我使用Firebase云消息传递来启动推送通知。这是我的密码: index.html <script> var config = { // ... }; firebase.initializeApp(config); const messaging = firebase.messaging(); navigator.serviceWorker.register('/static/firebase-m

我有一个Django项目,在该项目中,我使用Firebase云消息传递来启动推送通知。这是我的密码:

index.html

<script>
   var config = {
    // ...
    };
    firebase.initializeApp(config);

    const messaging = firebase.messaging();
    navigator.serviceWorker.register('/static/firebase-messaging-sw.js').then((registration) => {
        messaging.useServiceWorker(registration);
        messaging.requestPermission().then(function() {
           console.log('Notification permission granted.');
           return messaging.getToken();
        }).then(function(token){
            $.post('/a_send_fcm_token/', {'fcm_token_web': token}); 
        }).catch(function(err){
            console.log('Error ocurred');
        });
    });

    messaging.onMessage(function(payload) {
        console.log('Hoorah'); // does not work :(
    });

</script>
最后,我的Django视图向FCM发布消息:

 headers = {'Authorization': "key=AAAA7oE3MjY:APA91bE_M....",
            'Content-type': 'application/json'}
 token = ...
 payload = json.dumps({"notification": {}, "token": token})
 r = requests.post("https://fcm.googleapis.com/fcm/send", data=payload, headers=headers)
 return True
似乎我已经正确地实现了大部分内容,因为我成功地从FCM获得了令牌。但是我无法在
messaging.onMessage()
中获取消息。它只是不会触发

所以问题是:


为什么我的
messaging.onMessage()
不起作用?

您可能需要一个内容类型的标题:
content-type:application/json
。另外,如果发布的键和配置数据是您的真实值,您应该编辑帖子以放入占位符。我不知道Django。是否有某种方法可以获取
请求的响应状态。发布(…)
以查看是否成功?内容类型的标题词是
内容类型
而不是
内容类型
as。另外,作为一个实验,尝试发送
通知
有效负载,而不是像示例中那样发送
数据
。内容类型键仍然错误。应该是
内容类型
。鲍勃,我正在使用http(不使用https)。这可能是原因吗?
 headers = {'Authorization': "key=AAAA7oE3MjY:APA91bE_M....",
            'Content-type': 'application/json'}
 token = ...
 payload = json.dumps({"notification": {}, "token": token})
 r = requests.post("https://fcm.googleapis.com/fcm/send", data=payload, headers=headers)
 return True