首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于Firebase消息的即时消息实现

基于Firebase消息的即时消息实现
EN

Stack Overflow用户
提问于 2016-11-08 23:35:31
回答 1查看 2.5K关注 0票数 1

我已经设置了一个android应用程序,它可以以以下方式与Firebase消息传递(FCM)一起工作:

  1. 当我的应用程序启动时,它会将FCM令牌发送到我的应用服务器,后者将令牌存储在数据库中。
  2. 当用户发送消息时,它将消息发送到我的应用服务器。然后,我的应用服务器从数据库中检索其他用户的FCM令牌,并向Google发送请求,将消息推送到这些设备上。

这是可行的,但我面临的问题是确定要向哪个FCM令牌发送消息。Firebase消息传递的工作方式是在应用程序在后台运行时传递消息。我不想这样做,因为这是不必要的,浪费带宽给用户和我的应用服务器。

那么,我如何才能将FCM消息发送到打开我的应用程序的设备呢?在发送FCM消息时,我不能简单地查看Google的响应,然后删除所有未能发送的FCM令牌,因为响应会说消息已经成功发送,即使应用程序处于后台,或者应用程序已被迫停止。

因此,我可以想出一些可能的解决方案,但我不确定哪一个是最好的。他们都不是很好的选择。

  1. 让我的应用每隔几分钟对我的服务器进行一次投票,告诉它应用程序是打开的。(我想避免投票,因为这不正是FCM应该消除的吗?)
  2. 每次应用程序被暂停或销毁时,强制Firebase消息将删除令牌。这将使消息无法发送到旧的FCM令牌,然后我可以删除失败的令牌。
  3. 放弃FCM并使用TCP连接实现我的解决方案。

我现在倾向于第二种选择。但这仍然意味着我的应用服务器不得不尝试将消息发送到离线设备,但却失败了。还有更好的办法让我错过吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-05-07 21:47:16

我认为你的做法是错误的。Firebase是为即时消息应用程序设计的--这是服务的全部要点。当应用程序打开时,您可以使用Firebase数据库和SDK来设置观察者,以便在数据更改时实时查看。

当应用程序处于后台时,连接将被终止,然后您将需要依赖推送通知。

您应该查看Chat,它是一个使用Firebase的开源即时通信程序--也许它会给您提供一些关于如何实现您想要的功能的想法。您可以在Github上看到该项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40498222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档