Django 浏览器未接收到Firebase消息
我有一个Django项目,在该项目中,我使用Firebase云消息传递来启动推送通知。这是我的密码: index.htmlDjango 浏览器未接收到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
<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