13

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

帮助是非常明显的,

回答

6

没有为APNS或GCM没有ejabberd插件。我觉得你在这里两个主要选项:

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

  2. 根据mod_offline_post,创建您自己的模块,它将发送推送通知而不是POST请求。有几个实现apns和gcm的示例和库。即对于apns为apns4erl,对于gcm为this code。但是,当然,知道一些erlang是很好的。

3

AFAIK没有公共的ejabberd模块,它提供了一个GCM或APN的接口。

我建议您使用ejabberd_hook实现自定义模块。您可以看到ejabberd内部模块和存在挂钩的示例here

如果你想将消息转发到脱机用户,我建议offline_message_hook而对于消息的通用过滤我建议filter_packet({From, To, Packet})和检查数据包类型(见this计算器问题)。

了解收件人,您可以从数据库中检索设备令牌/注册ID,并使用一些erlang代码转发消息。

对于APN,请查看一些simple code,解释它是如何工作的,或者解释如何工作或与此erlang ex_apns。如果你想了解更多有关APN的信息,如果你想为APN模拟服务器,你可以阅读这个博客post

对于GCM的示例,您可以使用@ Lucas提供的示例链接。

+0

如何从数据库检索设备令牌? – 2014-12-24 21:40:37

+0

这完全取决于你如何存储令牌和什么数据库。 – user601836 2014-12-25 16:01:25