Javascript 无法在Chrome扩展中获取Firebase消息传递令牌
我正在构建一个接收推送通知的chrome扩展。这在firebase的早期版本(4.4.0)中有效,但在最近升级到5.2.0后,我再也无法获得令牌。请注意,在这次升级过程中,我清除了一些缓存并做了一些额外的更改,因此这可能与新的FB版本无关 从下面的代码和输出可以看出,当我执行getToken()承诺时,它从不调用“then”或“catch”处理程序。在控制台、网络选项卡或任何其他指示正在发生任何事情的信息中,我都看不到任何消息。有什么想法吗Javascript 无法在Chrome扩展中获取Firebase消息传递令牌,javascript,google-chrome,firebase,google-chrome-extension,firebase-cloud-messaging,Javascript,Google Chrome,Firebase,Google Chrome Extension,Firebase Cloud Messaging,我正在构建一个接收推送通知的chrome扩展。这在firebase的早期版本(4.4.0)中有效,但在最近升级到5.2.0后,我再也无法获得令牌。请注意,在这次升级过程中,我清除了一些缓存并做了一些额外的更改,因此这可能与新的FB版本无关 从下面的代码和输出可以看出,当我执行getToken()承诺时,它从不调用“then”或“catch”处理程序。在控制台、网络选项卡或任何其他指示正在发生任何事情的信息中,我都看不到任何消息。有什么想法吗 Chrome版本67.0.3396.99(官方版本)
- Chrome版本67.0.3396.99(官方版本)(64位)
- MAC 10.12.6
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "",
messagingSenderId: "..."
};
firebase.initializeApp(config);
var fbmessaging = firebase.messaging();
function getToken(){
trace('Getting new token');
var promise = fbmessaging.getToken();
trace('Have getToken() promise. Executing.');
promise.then(function(newToken) {
trace('New token received: ' +newToken);
})
.catch(function(err) {
trace('Unable to retrieve refreshed token ', err);
});
}
fbmessaging.requestPermission()
.then(function() {
trace('Notification permission granted.');
getToken();
}).catch(function(err) {
trace('Unable to get firebase messaging permission: ' +err);
});
fbmessaging.onTokenRefresh(function(arg) {
trace("OnTokenRefresh called. " +arg);
getToken();
});
跟踪的完整输出:
Notification permission granted.
Getting new token
Have getToken() promise. Executing.
我已经能够确定,尽管从requestPermission()收到了已授予权限的响应,但仍然存在一个问题。如果我在chrome设置中将扩展名的ID手动添加到我的通知“允许”列表中,则getToken()将正常返回。我已尝试从清单中删除“gcm”和“通知”权限,以查看是否可以触发通知批准提示,但从未收到提示。我已经调查/测试了其他方法,例如从“真实”网站注册推送通知&服务工作者,但由于服务工作者中没有chrome.runtime,因此无法将消息传递到我的扩展。有什么办法可以通知我的分机吗?