ejabberd和推送通知

时间:2013-04-24 10:27:38

标签: iphone xmpp apple-push-notifications ejabberd google-cloud-messaging

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

帮助非常明显,

3 个答案:

答案 0 :(得分:13)

请使用以下博客,它非常简单实用,对我来说很好。

http://symmetricinfinity.com/2013/01/23/ios-push-notifications-from-ejabberd.html

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:3)

AFAIK没有提供GCM或APN接口的公共ejabberd模块。

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

如果您想将消息转发给离线用户,我建议offline_message_hook,而对于消息的通用过滤,我建议filter_packet({From, To, Packet})并检查数据包类型(请参阅this stackoverflow问题)。< / p>

了解收件人,您可以从db中检索设备令牌/注册ID,并使用某些erlang代码转发邮件。

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

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