Android 如何将FCM与Ejabberd整合?
环境: Ejabberd版本:16.04 Smack-android-4.1.0 我已经用XMPP服务器创建了一个Android聊天应用程序。然而,由于谷歌播放权限问题,我不得不缩小应用程序的功能范围,该应用程序支持在后台接收传入消息通知 作为替代方案,我从Google Play审查小组收到了以下建议Android 如何将FCM与Ejabberd整合?,android,erlang,firebase-cloud-messaging,ejabberd,smack,Android,Erlang,Firebase Cloud Messaging,Ejabberd,Smack,环境: Ejabberd版本:16.04 Smack-android-4.1.0 我已经用XMPP服务器创建了一个Android聊天应用程序。然而,由于谷歌播放权限问题,我不得不缩小应用程序的功能范围,该应用程序支持在后台接收传入消息通知 作为替代方案,我从Google Play审查小组收到了以下建议 一旦移除此权限,您可能会考虑使用FieldBASE。 如果您的应用程序的消息传递需要 暂时免除电池优化。请调高 仅当消息是时间关键的并且需要用户的 即时交互,并注意将消息设置为高 与正常优先级相比
一旦移除此权限,您可能会考虑使用FieldBASE。 如果您的应用程序的消息传递需要 暂时免除电池优化。请调高 仅当消息是时间关键的并且需要用户的 即时交互,并注意将消息设置为高 与正常优先级相比,优先级会导致更多的电池耗电 信息
因此,目前用户可以通过应用程序发送消息。但当他关闭应用程序时,他将被视为离线用户,不会收到来自应用程序的任何通知。当他再次打开应用程序时,他将获得保存在Ejabberd服务器上的所有脱机消息 我想增强当前的应用程序,这样即使用户关闭了应用程序,当有人向他发送消息时,他仍然会收到通知(类似于whatsapp)我在网上发现了类似的问题,但我找不到任何有效的解决办法。因为我对Erlang没有太多经验,我很高兴听到您在这方面的解决方案/想法。提前感谢。这可以在Ejabberd中通过离线消息钩子实现。当在脱机状态下向接收方和接收方发送消息时,会触发此钩子。因此,使用这个钩子创建一个自定义模块,您可以向FCM和APNs服务器发送推送通知。
请参阅此博客--看起来您需要尝试应用以下方法:
- 创建RESTAPI以存储具有JID用户的用户令牌
- 为获取XML包创建自定义钩子
- 集成到项目库中(该库可以发送FCM/APN)
- 在自定义钩子中调用
函数,其中将通过JID从DB获取用户令牌,并通过发送FCM/APNS通知创建有效负载spawn