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



我希望我不会在这个问题上投反对票,我一直在尝试使用Firebase为我的 CMS 设置网络通知,我注意到 Google 关于该主题的 Firebase 文档很大,我的意思是非常大你会感到困惑。

到目前为止,我设法添加了让人们订阅通知的功能,让浏览器请求他们向他们发送通知的权限,然后在他们接受并将这些令牌存储在我的数据库中后,我获得了唯一的令牌,我还设法更改了service worker的位置,一切看起来都不错和花花公子。

现在,我想向存储在我的数据库中的所有用户(令牌(发送通知,我认为循环访问它们并使用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,我如何知道该用户的旧令牌,以便在存储他/她的新令牌后将其从数据库中删除?

这些问题确实困扰着我。

提前谢谢。

v1 API 目前只允许一次发送到单个令牌。计划添加多播(它存在于以前的 API 中(,但我没有何时可用的时间表。因此,现在这意味着您需要为每个令牌调用 FCM API。

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

相关内容

  • 没有找到相关文章

最新更新