Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Firebase Cloud Messaging for web:如何发送到多个令牌?_Firebase_Firebase Cloud Messaging_Token - Fatal编程技术网

Firebase Cloud Messaging for web:如何发送到多个令牌?

Firebase Cloud Messaging for web:如何发送到多个令牌?,firebase,firebase-cloud-messaging,token,Firebase,Firebase Cloud Messaging,Token,我希望我不会在这个问题上遭到否决,我一直在尝试使用Firebase为我的CMS设置web通知,我注意到这个主题非常大,我的意思是非常大,你会感到困惑 到目前为止,我成功地添加了允许人们订阅通知的功能,允许浏览器请求他们发送通知,然后在他们接受并将这些令牌存储在我的数据库中后,我获得唯一的令牌,我还设法改变了服务人员的位置,一切看起来都很好 现在,我想向存储在数据库中的所有用户令牌发送通知,我认为循环使用它们并使用CURL分别向每个令牌发送通知是一个糟糕的解决方案。我找不到关于如何在一次CURL调

我希望我不会在这个问题上遭到否决,我一直在尝试使用Firebase为我的CMS设置web通知,我注意到这个主题非常大,我的意思是非常大,你会感到困惑

到目前为止,我成功地添加了允许人们订阅通知的功能,允许浏览器请求他们发送通知,然后在他们接受并将这些令牌存储在我的数据库中后,我获得唯一的令牌,我还设法改变了服务人员的位置,一切看起来都很好

现在,我想向存储在数据库中的所有用户令牌发送通知,我认为循环使用它们并使用CURL分别向每个令牌发送通知是一个糟糕的解决方案。我找不到关于如何在一次CURL调用中向所有令牌发送通知的文档

这是我目前的代码:

<!-- Firebase Technologies -->
<!-- Firebase App is always required and must be first -->
<script src="https://www.gstatic.com/firebasejs/5.1.0/firebase-app.js"> 
</script>
<script src="https://www.gstatic.com/firebasejs/5.1.0/firebase- 
messaging.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "AIzaSyAR84lF2vbnfUWPZ2899dnqiTthgvfv7Ms",
authDomain: "lazemnicms.firebaseapp.com",
databaseURL: "https://lazemnicms.firebaseio.com",
projectId: "lazemnicms",
storageBucket: "lazemnicms.appspot.com",
messagingSenderId: "268754114869"
};
firebase.initializeApp(config);
messaging = firebase.messaging();
//Registering the service worker
navigator.serviceWorker.register("firebase-messaging-sw.js", {scope: "firebase-cloud-messaging-push-scope"}).then(function (registration) {

messaging.useServiceWorker(registration);

}).catch(function (err) {
  // registration failed :(
  console.log('ServiceWorker registration failed: ', err);
});

permissionGranted = false;

messaging.getToken().then(function(currentToken) {
if (currentToken) {
    console.log(currentToken);
    permissionGranted = true;
    //sendTokenToServer(currentToken);
    //updateUIForPushEnabled(currentToken);
} else {
    permissionGranted = false;
}
}).catch(function(err) {
    permissionGranted = false;
});
此外,如果用户获得了refreshedToken,我如何知道该用户的旧令牌,以便在存储他/她的新令牌后将其从数据库中删除

这些问题真让我烦恼


提前感谢。

v1api目前只允许一次发送一个令牌。计划将其添加到多播中,但我没有它何时可用的时间表。所以现在这意味着您需要为每个令牌调用FCMAPI


没有任何内置内容可以知道用户的上一个令牌。执行此操作的典型方法是将最后一个已知令牌保留在本地存储中,并在获得新令牌时注销该令牌。或者,您可以在发送消息时捕获指示无效令牌的错误,并以这种方式将其从数据库中删除。这两种方法的结合可能是最好的。

非常完美,因此我想我会将令牌保存在cookie中,每当出现新令牌时,我就可以从cookie中获取旧令牌并将其发送到服务器以删除它,并将新令牌存储在服务器和cookie中。