ejabberd 和推送通知

Posted

技术标签:

【中文标题】ejabberd 和推送通知【英文标题】:ejabberd and Push Notification 【发布时间】:2013-04-17 20:43:49 【问题描述】:

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

帮助非常明显,

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

我建议您使用ejabberd_hook 实现自定义模块。你可以看到一个ejabberd内部模块和presence hookhere的例子。

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

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

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

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

【讨论】:

如何从 db 中检索设备令牌? 这完全取决于您存储令牌的方式和数据库。【参考方案3】:

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

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

【讨论】:

如何推送给安卓离线用户? 如何从 Android 客户端向 eJabberD 发送 FCM 配置参数?我正在使用 Smack SDK 客户端。任何建议@MickaëlRémond,vks

以上是关于ejabberd 和推送通知的主要内容,如果未能解决你的问题,请参考以下文章

使用 ejabberd(版本 2.1.6)在 iphone 中推送通知延迟

XMPP 上的群聊推送通知

iOS推送通知和远程通知的区别?

本地通知和推送通知

ios推送通知之ios推送证书的申请和使用配置

PWA 的推送通知或 Web 推送通知