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

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

帮助非常明显,

【问题讨论】:

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


    【解决方案1】:

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

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

    2. 基于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 stackoverflow 问题)。

      了解收件人后,您可以从数据库中检索设备令牌/注册 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
      猜你喜欢
      • 2021-03-06
      • 2015-05-26
      • 2011-04-05
      • 2016-05-05
      • 2017-03-26
      • 2018-07-24
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多