Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将FCM与Ejabberd整合?_Android_Erlang_Firebase Cloud Messaging_Ejabberd_Smack - Fatal编程技术网

Android 如何将FCM与Ejabberd整合?

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。 如果您的应用程序的消息传递需要 暂时免除电池优化。请调高 仅当消息是时间关键的并且需要用户的 即时交互,并注意将消息设置为高 与正常优先级相比

环境:

Ejabberd版本:16.04

Smack-android-4.1.0

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

作为替代方案,我从Google Play审查小组收到了以下建议

一旦移除此权限,您可能会考虑使用FieldBASE。 如果您的应用程序的消息传递需要 暂时免除电池优化。请调高 仅当消息是时间关键的并且需要用户的 即时交互,并注意将消息设置为高 与正常优先级相比,优先级会导致更多的电池耗电 信息

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

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

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

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

  • 如果没有,我们就必须从头开始编写Erlang模块吗


  • 我在网上发现了类似的问题,但我找不到任何有效的解决办法。因为我对Erlang没有太多经验,我很高兴听到您在这方面的解决方案/想法。提前感谢。

    这可以在Ejabberd中通过离线消息钩子实现。当在脱机状态下向接收方和接收方发送消息时,会触发此钩子。因此,使用这个钩子创建一个自定义模块,您可以向FCM和APNs服务器发送推送通知。
    请参阅此博客--

    看起来您需要尝试应用以下方法:

    • 创建RESTAPI以存储具有JID用户的用户令牌
    • 为获取XML包创建自定义钩子
    • 集成到项目库中(该库可以发送FCM/APN)
    • 在自定义钩子中调用
      spawn
      函数,其中将通过JID从DB获取用户令牌,并通过发送FCM/APNS通知创建有效负载