2013-06-01 146 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