Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FCM对于同一个Javascript客户端有两个活动令牌_Javascript_Firebase_Firebase Cloud Messaging_Web Notifications - Fatal编程技术网

FCM对于同一个Javascript客户端有两个活动令牌

FCM对于同一个Javascript客户端有两个活动令牌,javascript,firebase,firebase-cloud-messaging,web-notifications,Javascript,Firebase,Firebase Cloud Messaging,Web Notifications,我正在使用Firebase Javascript SDK向React JS应用程序添加web推送通知。通过一些事件序列,我们得到了两个FCM令牌,它们似乎来自同一个web客户端(同一台机器、浏览器和站点域)。在客户端上接收发送到任一令牌的FCM消息。我本以为其中一个令牌会失效,但事实似乎并非如此。发生这种情况时,是否可以识别和删除无关的令牌 注册我们的服务工作者并将FCM令牌发送到后端服务的代码如下所示: firebase.initializeApp(Config.firebase); thi

我正在使用Firebase Javascript SDK向React JS应用程序添加web推送通知。通过一些事件序列,我们得到了两个FCM令牌,它们似乎来自同一个web客户端(同一台机器、浏览器和站点域)。在客户端上接收发送到任一令牌的FCM消息。我本以为其中一个令牌会失效,但事实似乎并非如此。发生这种情况时,是否可以识别和删除无关的令牌

注册我们的服务工作者并将FCM令牌发送到后端服务的代码如下所示:

firebase.initializeApp(Config.firebase);
this.messaging=firebase.messaging();
this.setupNotifications(this.messaging,this.loadAlerts.bind(this));
设置通知(消息传递、处理程序){
让_this=this;
if(导航器中的“serviceWorker”){
navigator.serviceWorker.register('./sw/firebase messaging sw.js')
.然后(功能(注册){
registration.update();
_this.messaging.useServiceWorker(注册);
Notification.requestPermission().then(messaging.requestPermission)
.然后(函数(t){
返回消息。getToken();
})
.then(功能(令牌){
//这会将令牌保存到我们的服务器
服务注册(令牌);
})
.catch(函数(错误){
console.log('发生错误:'+错误消息)
});
}).catch(e=>{
console.log('firebase注册期间出错:'+e.message);
});
navigator.serviceWorker.addEventListener('message',event=>{
if(事件、数据、事件){
//如果事件数据包含事件属性,则这是来自
//服务工作者通知单击处理程序。加载事件的详细信息。
window.location=some_url_path+event.data.incents;
}
});
_this.messaging.onMessage(函数(有效负载){
handler();
});
_this.messaging.onTokenRefresh(函数(){
messaging.getToken()
.then(函数(刷新){
//这会将刷新的令牌保存到服务器
服务。登记(刷新);
})
.catch(函数(err){
console.log('无法检索刷新的令牌',错误);
});
});
}

}
您解决过这个问题吗。我也有同样的问题