2013-06-01 150 views
12

我真的试图找到解决这个问题的办法,但没有。有一些线索与这个概念有关,但我没有找到全面的解决方案。XMPP(Openfire)推送通知Android

我有一个Openfire的服务器发送消息。当两个用户都在线时,没有问题。但是,当用户离线时,我想发送推送通知,如Whatsapp。我听说Whatsapp和其他IM应用程序使用ejabber的修改版本来发送推送通知,但无法找到方法。

一种可能性是使用GCM,但我不确定这是否是正确的方法。另外我想避免轮询,为了不耗尽电池寿命。

有没有人知道这个解决方案或有一个例子?

回答

2

那么,你可以使用GCM与XMPP。 新的GCM Cloud Connection Server允许您在服务器和Android应用程序之间使用XMPP协议进行双向(云到设备和设备到云)通信。

的GCM云连接服务器(CCS)允许第三方服务器 通过建立与使用XMPP协议谷歌服务器的持续TCP连接 与Android设备进行通信。这种通讯是异步和双向的。

+0

我会试试看。我明白这可能是一个很好的解决方案。一旦你的解决方案为我工作,我会接受你的答案:) – Max

+0

嗯,这是值得一试,但不要忘记这是一个试用功能,所以它可能还没有准备好生产。 – Eran

+0

我希望避免使用GCM,因为设备上需要使用Google帐户才能收到推送通知,但我认为这是目前唯一的选择。再次感谢您的回答。 – Max

-3

在openfire中自动完成,当用户上网时,用户会收到消息。因此,不用担心向离线用户发送消息,并且当用户上线时,消息将自动推送给用户。

+0

那么这是真的,但我想做一个即时通讯工具,这需要在用户离线情况下的推送通知。我希望用户在被发送消息(推送通知)后得到通知。 – Max

+1

为什么不运行后台服务并保持与OpenFire的连接? –

8

我正在研究openfire,并找到了一些很好的选项,我想与大家分享一下。 我在github中发现了一个插件,我将在本周测试它。看来,这将是一个很好的解决你的目标和我的:https://github.com/meisterfuu/Openfire-GCM/

另一种选择是使用CallbackOnOffline插件,有往返调用的参数指定的URL。该网址可能是Web服务中的一个端点,通过这些数据(To和From),您可以获得关联的Id,以便在您的基础上进行推送,并进行推送。

https://www.igniterealtime.org/projects/openfire/plugins.jsp

+0

Openfire-GCM不起作用。你可能有更新的版本? – Pierre