ejabberd和推送通知

17

我已经使用XMPP在我的iOS和Android应用程序中集成了聊天系统。我在服务器端使用了ejabberd 2。聊天系统工作正常。我想使用APNS和GCM在我的聊天中集成推送通知。如何在每个聊天消息中发送推送通知?ejabberd 2是否有可用于实现此功能的API或扩展?

高度感激任何帮助。

3个回答

13

1
如何将推送发送给Android离线用户? - Abhishek Chauhan
如何从Android客户端向eJabberD发送FCM配置参数?我正在使用Smack SDK客户端。有什么建议@Mickaël Rémond,vks - CoDe

8

ejabberd没有适用于apns或gcm的插件。我认为你有两个主要选择:

  1. 使用mod_offline_post模块,该模块将在给定的url上发送POST请求。然后,您可以使用任何现有的后端语言来处理apns和gcm(无论如何,我都在使用rails作为后端,所以这只是另一个处理它的端点)。

  2. 基于mod_offline_post,创建自己的模块,该模块将发送推送通知而不是POST请求。有一些实现apns和gcm的示例和库。例如,apns4erl用于apns,此代码用于gcm。但是,当然最好了解一些erlang。


3
据我所知,目前没有公共的ejabberd模块提供与GCM或APN的接口。
我建议您使用ejabberd_hook实现自定义模块。您可以在这里看到ejabberd内部模块和presence hook的示例。
如果您想将消息转发给离线用户,我建议使用offline_message_hook,而对于通用消息过滤,我建议使用filter_packet({From, To, Packet})并检查数据包类型(请参阅this stackoverflow问题)。
知道收件人后,您可以从数据库中检索设备标记/注册ID,并使用一些erlang代码转发消息。

关于APN,请查看一些简单代码,以了解其工作原理,或查看这个erlang ex_apns。如果您想了解更多关于APN的信息,或者需要一个APN的模拟服务器,您可以阅读这篇博客post

如果您想要一个GCM的示例,您可以使用@Lucas提供的示例链接。


我该如何从数据库中检索设备令牌? - Tolgay Toklar
这完全取决于您如何存储令牌以及使用的数据库。 - user601836

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接