gpt4 book ai didi

java - 使用 XMPP 服务器和 Google Cloud Messaging(或更新的 Firebase Cloud Messaging)推送通知的 Android 聊天应用程序

转载 作者:IT老高 更新时间:2023-10-28 23:21:29 25 4
gpt4 key购买 nike

我正在为 Android 开发一个聊天应用程序。几周以来,我一直在阅读有关 XMPP 和 Google Cloud Messaging(以及 Firebase Cloud Messaging)的信息,但我仍然很困惑。

目前,我已经在本地(Ejabberd)设置了一个 XMPP 服务器,并使用 Smack 库成功地将我的 Android 应用程序连接到它。

据我了解,我需要使用 GCM 或更新的 FCM 进行推送通知,因此我已经在 Google Cloud Platform 中创建了一个项目。我的 Android 应用程序也可以使用 Smack 库连接到它(而不是直接连接到我的 XMPP 服务器)。在我的服务器中,我有一个小型 Java 应用程序,它也使用 Smack 库连接到 GCM。

到这里为止一切都很好。我最大的困惑是:我如何将 XMPP 服务器与 GCM 一起用于推送通知? 我为服务器端实现找到的每个文档、示例、指南、教程都只是告诉我如何连接到 GCM,但没有告诉我如何将我的 XMPP 服务器与 GCM 结合使用。 我错过了什么?我的 Java 应用程序只是连接到 GCM,从 GCM 接收和发送消息,但我的 XMPP 服务器只是坐在那里无所事事。实际上我的 Android 应用和服务器 Java 应用只使用 GCM,而不是我的 XMPP 服务器。

我希望有人可以帮助我从整体上理解这一点,我显然缺少实现此实现的一些关键要素。

最佳答案

您需要将 Ejabberd 和 FCM 混合在一起,这就是所有大型聊天应用程序的做法。最基本的,有 3 个组件:App Server 通过 XMPP 连接到 FCM、Ejabberd 和您的客户端应用程序。

  1. 当应用处于前台时,您使用 Smack 库直接连接到您的 Ejabberd 服务器、发送消息、更改用户的状态等。与您的 Ejabberd 的连接在此期间保持。您不要在此期间发送上游消息!
  2. 一旦用户离开您的应用,您就<​​strong>关闭连接。用户现在被视为“离开”或“离线”。
  3. 从此时起,您的应用服务器与 FCM 通信以使用 Smack 库向设备发送下游消息
  4. 在客户端设备上:您处理传入消息并显示通知。使用 Android N,用户可以直接从通知中回复。我假设在这种情况下,您将使用 FCM 向您的应用服务器发送上游消息,因为在此期间,您的 Ejabberd 服务器没有 Activity 连接。
  5. 一旦用户点击通知,应用就会回到前台,您重新连接到 Ejabberd 并返回到第 1 步。

这是实现您想要的架构的基本描述。

关于java - 使用 XMPP 服务器和 Google Cloud Messaging(或更新的 Firebase Cloud Messaging)推送通知的 Android 聊天应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com