android - 从 REST API 发送时,Android 设备会收到两次 Firebase 通知
问题描述
我有一个使用 FCM 获取通知的 android 应用程序。我正在使用这个版本:
implementation "com.google.firebase:firebase-analytics-ktx:17.4.3"
implementation "com.google.firebase:firebase-inappmessaging-display-ktx:19.0.7"
implementation "com.google.firebase:firebase-messaging:20.2.0"
我最近遇到的问题是我试图通过 REST API 调用用我自己的后端服务器发送推送通知。我注意到对于每一个 api 调用,android 设备都会收到两次通知。
所以我检查了这个问题:Firebase send push notification 两次,我注意到就像Tom Bevelander的回答一样,我有一个使用 GCM 的第三方库,当我从项目中删除该库时,问题已解决。
所以我必须强迫我的用户更新应用程序。但我真的不想要这种方法。我看到的是,在以前的版本(包含 GCM 的应用程序)上,当我使用 Firebase 面板本身测试推送通知时,一切正常,设备会收到单一通知。但是通过 api 调用,设备会收到重复的通知。这种方法有什么区别?如何找出 FirebasePanel 背后发生的事情?这样我就调用了面板使用的同一个 api?我测试过的端点是这样的:
https://fcm.googleapis.com/fcm/send
和这个:
https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
解决方案
兄弟可能会支持设备令牌可能是重复的,就像两个用户从同一设备登录并且两个用户设备令牌相同,并且服务器通过基于设备令牌的通知。所以如果他两次找到相同的令牌,它会通过两次通知或更多的。
推荐阅读
- java - 在线程中如何返回上一个活动
- apache-spark - Kubernetes WatchConnectionManager:执行失败:HTTP 403
- multithreading - 你可以为线程指定一个非静态的生命周期吗?
- .net - 如何在.net core web 中将 url 设置为 webapi?
- java - STOMP 目标 url 与端点 url
- javascript - 获取每个列表元素的最后 3 个字符并使用 Javascript 将其更改为 #
- cas - ENDECA - 爬网在baseline_update 中返回错误
- docker - 远程访问页面时出现“无法启动‘npm’”错误消息
- c++ - 成员函数的 pragma GCC 毒药语法
- assembly - 在汇编语言 8086 中交换字符串中的字母