16

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

帮助是非常可观的,

4

3 回答 3

13

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

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

于 2013-05-22T08:38:59.433 回答
7

apns 或 gcm 没有 ejabberd 插件。我认为您在这里有两个主要选择:

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

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

于 2013-05-01T08:40:56.730 回答
3

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

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

如果您想将消息转发给离线用户,我建议offline_message_hook同时对消息进行通用过滤,filter_packet({From, To, Packet})并检查数据包类型(请参阅stackoverflow 问题)。

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

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

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

于 2013-05-01T16:46:04.250 回答