我正在使用子域和https并使用firebase js版本4.10.1测试服务器中的FCM。
第一次允许访问时,推送通知正常工作。我可以使用谷歌(https://fcm.googleapis.com/fcm/send)成功发送通知。
然后我手动禁用通知以拒绝然后重新加载页面。 现在我尝试使用谷歌api发送通知,我收到错误NotRegistered这是正确的。
之后我手动启用通知以允许然后重新加载页面。 现在我尝试使用谷歌api发送通知,我再次收到错误NotRegistered。
那么我有什么问题?
https://www.gstatic.com/firebasejs/4.10.1/firebase.js
var config = {
apiKey: "XXX",
authDomain: "XXX",
databaseURL: "XXX",
projectId: "XXX",
storageBucket: "XXX",
messagingSenderId: "XXX"
}
firebase.initializeApp(config);
var messaging = firebase.messaging();
messaging.onMessage(function(data) {
console.log("Message received. ", data);
var notificationObj = {
body: data.notification.body,
};
if (data.data && data.data['gcm.notification.image']) {
notificationObj.image = data.data['gcm.notification.image'];
}
if (data.notification.icon) {
notificationObj.icon = data.notification.icon;
}
var instance = new Notification(data.notification.title, notificationObj);
instance.onclick = function(){
console.log('clicked');
instance.close();
window.location.href = data.notification.click_action;
}
instance.onshow = function(){
console.log('showed');
}
instance.onclose = function(){
console.log('closed');
}
});
messaging.requestPermission()
.then(function() {
console.log('Notification permission granted.');
messaging.getToken()
.then(function(currentToken) {
if (currentToken) {
console.log(currentToken);
} else {
// Show permission request.
console.log('No Instance ID token available. Request permission to generate one.');
// Show permission UI.
}
})
.catch(function(err) {
console.log('An error occurred while retrieving token. ', err);
});
})
.catch(function(err) {
console.log('Unable to get permission to notify.', err);
});
messaging.onTokenRefresh(function() {
messaging.getToken()
.then(function(refreshedToken) {
console.log('Token refreshed.',refreshedToken);
})
.catch(function(err) {
console.log('Unable to retrieve refreshed token ', err);
});
});
答案 0 :(得分:0)
我发了一封电子邮件给谷歌支持,我收到了回复
来自Google支持:我能够使用FCM JS快速入门示例在我的最终复制此内容,并发现它仅影响SDK版本4.10.0+。我已经把这个bug引起了我们工程师的注意,我们正在努力解决这个问题。我无法分享关于它何时将在生产中发布的具体时间表,但与此同时,我建议使用较低版本的SDK(例如4.9.0)作为解决方法。
请留意发行说明,或随时查看 关于修复的任何进一步更新。
所以他们在firebase 4.10.0+
上面有这个问题