我正在开发一个chrome扩展程序,该扩展程序应该能够接收FCM消息。要获取我的FCM令牌,我使用以下代码
messaging.requestPermission().then(function(permission) {
messaging.getToken().then(function(current_token) {
if(current_token) {
//update user token
console.log('token', current_token);
} else {
// you don't have permission to show notifications
// detect whether they are blocked or not, then show your custom UI
}
}).catch(function(err) {
// retrieving token failed, analyze the error
console.error('retrieving token failed, analyze the error', err);
});
}
但是问题是我得到的permission
的类型未定义,然后我没有从getToken()
得到任何结果,没有空令牌,没有错误,没什么。
答案 0 :(得分:0)
好的,感谢@ Mr.Rebot的评论,我发现这很可能是Chrome漏洞,解决方法是在Chrome Notification Settings中手动将扩展名列入白名单。您的扩展程序链接看起来像chrome-extension://<extension-id>/
。
答案 1 :(得分:0)
要获取令牌,有两件事要做:
firebase-messaging-sw.js
,并将其作为后台脚本包含在manifest.json
中。例如,我这样做:"background": {
"scripts": [
"js/firebase-app.js",
"js/firebase-messaging.js",
"firebase-messaging-sw.js",
"js/background.js"
],
"persistent": false
}
"notifications"
权限。我的样子:"permissions": [
"storage",
"tabs",
"notifications"
]
现在,messaging.getToken()
(在background.js
中)即使不使用messaging.requestPermission()
也可以正常工作。