如何将 FCM 与 Ejabberd 集成?

B37*_*378 5 erlang android ejabberd smack firebase-cloud-messaging

环境:

Ejabberd 版本:16.04

Smack-android-4.1.0

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

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

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

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

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

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

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

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

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

Suj*_*mar 3

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