首页 > 解决方案 > 如何将 FCM 与 Ejabberd 集成?

问题描述

环境:

Ejabberd 版本:16.04

Smack-android-4.1.0

我创建了一个带有 XMPP 服务器的 Android 聊天应用程序。但是,由于 Google 播放权限问题,我不得不缩小应用程序的功能范围,该功能支持在应用程序处于后台时接收传入消息通知。

作为替代方案,我收到了来自 GooglePlay 审核小组的以下建议。

删除此权限后,如果您的应用的消息传递需要暂时免于电池优化,您可能会考虑使用 Firebase 云消息传递 (FCM)。请仅在消息时间紧迫且需要用户立即交互时才设置高优先级,并且请注意,与普通优先级消息相比,将消息设置为高优先级会消耗更多电量

因此,目前用户可以通过该应用程序发送消息。但是当他关闭应用程序时,他将被视为离线用户,并且不会收到应用程序的任何通知。当他再次打开应用程序时,他将获得所有保存在 Ejabberd 服务器上的离线消息。

我想增强当前的应用程序,以便即使用户关闭了应用程序,当有人向他发送消息时,他仍然会收到通知(类似于 whatsapp)

  1. ejabberd 中是否有将服务器与 FCM 集成并处理此问题的模块?

  2. 如果我们无法通过 Ejabberd 实现这一点,是否有第三方库支持这一点?

  3. 如果不是,我们是否必须从头开始编写 Erlang 模块?

我在互联网上发现了类似的问题,但找不到任何可行的解决方案。由于我对 Erlang 的经验并不多,因此很高兴听到您对此的解决方案/想法。提前致谢。

标签: androiderlangfirebase-cloud-messagingejabberdsmack

解决方案


这可以在 Ejabberd 中使用 offline_message_hook 来实现。该钩子在向处于离线状态的接收者和接收者发送消息时触发。因此,使用此挂钩创建一个自定义模块,您可以向 FCM 和 APNs 服务器发送推送通知。参考这个博客——https: //jasonrowe.com/2011/12/30/ejabberd-offline-messages/


推荐阅读