如何将FCM与Ejabberd集成?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将FCM与Ejabberd集成?相关的知识,希望对你有一定的参考价值。

环境:

Ejabberd版本:16.04

啪 - 安卓4.1.0

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

作为替代方案,我收到了GooglePlay评论小组的以下建议。

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

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

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

  1. ejabberd中是否有一个模块将服务器与FCM集成并处理这个问题?
  2. 如果我们无法通过Ejabberd实现这一目标,是否有第三方库来支持这一点?
  3. 如果不是,我们必须从头开始编写Erlang模块吗?

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

答案

这可以通过offline_message_hook在Ejabberd中实现。在离线状态下向接收器和接收器发送消息时触发此挂钩。因此,使用此挂钩创建自定义模块,您可以向FCM和APN服务器发送推送通知。请参阅此博客 - https://jasonrowe.com/2011/12/30/ejabberd-offline-messages/

以上是关于如何将FCM与Ejabberd集成?的主要内容,如果未能解决你的问题,请参考以下文章

Python 和 EJABBERD/XMPP [关闭]

如何在 ejabberd 中获取图像的缩略图

如何将数据包从服务器发送到客户端(从函数)Ejabberd

如何将 FCM(firebase 云消息传递)与 react-native 集成

ejabberd 上所有用户的最后活动

如何启用用户注册 - eJabberd for mac?