在Android中使用XMPP在用户离线时向用户发送通知

4
我使用Smack客户端和XMPP服务器实现了一款Android聊天应用程序。当用户在线时,一切都正常工作,但当用户离线(应用程序未在运行状态)时,我希望能够使用GCM来推送通知。是否有一种方法可以实现这一点,并且是否有一种方法可以管理我们的服务器本身来处理这个问题?

你所说的“应用程序离线”是指应用程序处于“停止/关闭”状态吗? - AL.
是的!那么如何像WhatsApp一样通知用户有关消息呢? - Newbiee
当应用程序完全停止/被杀死时,无法接收到有关其的通知。我在这个帖子中提到了我的答案。如果应用程序只是关闭,则仍然可以通过后台服务接收到通知。 - AL.
@McAwesomville 那么当用户离线时如何通知他有新消息呢?我在考虑在Openfire的offline表上触发器。 - Newbiee
你好,你找到解决方案了吗? - nitesh
2个回答

1
我也遇到了这个问题。我按照以下步骤解决:
  1. 开发一个带有数据库的 WebService(ASP 或 PHP 等),其中包含每个 JID 的用户 FCM-TOKENS。
  2. 在 Android 设备上开发 FCM,并在刷新时将 TOKEN 发送到我的 WebService 并保存在数据库中。
  3. 在 Openfire 中启用“CallBackOnOffline”插件。(当收到消息但接收者不可用时,它会向定义的 URL 发送带有 JSON 的 POST 请求)
  4. 在“服务属性”中设置“plugin.callback_on_offline.url”为我的 WebService。因此,消息和 JID 将被发送到我的 WebService。
  5. 现在从我的 WebService 数据库中获取 FCM-TOKEN,并向 FCM 发送请求,包含消息正文和标题。

0

您可以在用户在线或离线但设备联网时随时发送推送通知。您拥有所有设备的设备令牌,因此当您向特定用户发送消息时,请使用他的设备令牌并发送推送通知。


我在谈论当应用程序正在运行时,消息通过XMPP传递。但是当应用程序未运行/不在后台时,我想发送推送。我知道GCM的工作原理,但我不知道如何在服务器本身触发该触发器。 - Newbiee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接