我正在使用子域和https在服务器中测试FCM,并使用Firebase js版本的4.10.1。
首次允许访问时,推送通知工作正常。我可以使用谷歌(https://fcm.googleapis.com/fcm/send(成功发送通知。
然后我手动禁用通知以拒绝然后重新加载页面。现在我尝试使用谷歌 api 发送通知,但我收到错误 未注册 这是正确的。
之后,我手动启用通知以允许然后重新加载页面。现在我尝试使用谷歌 api 发送通知,但我再次收到错误未注册。
那么我有什么问题?
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);
});
});
我向谷歌支持发送了一封电子邮件,并收到了回复
来自谷歌支持:我能够使用 FCM JS 快速入门示例在我这边复制它,并发现它只影响 SDK 版本 4.10.0+。我已经提请我们的工程师注意这个错误,我们现在正在努力修复。我无法分享何时在生产中发布的具体时间表,但与此同时,我建议使用较低版本的 SDK(例如 4.9.0(作为解决方法。
请留意发行说明或随时查看我以获取有关修复程序的任何进一步更新。
所以他们在上面的 Firebase 4.10.0+ 中有这个问题