2013-06-01 26 views
12

Ho davvero provato a trovare una soluzione a questo problema ma non l'ho fatto. Ci sono alcuni thread relativi a questo concetto, ma non ho trovato una soluzione completa.XMPP (Openfire) Notifiche Push Android

Ho un server con Openfire che invia messaggi. Quando entrambi gli utenti sono online, non ci sono problemi. Tuttavia, quando un utente è offline, vorrei inviare una notifica push, come in Whatsapp. Ho sentito che Whatsapp e altre app IM utilizzano una versione modificata di ejabber per inviare notifiche push, ma non è stato possibile scoprire come.

Una possibilità è utilizzare GCM, ma non sono sicuro che questa sia la strada giusta da percorrere. Inoltre vorrei evitare il polling, per non sprecare la durata della batteria.

Qualcuno sa qualche soluzione a questo o ha un esempio?

risposta

2

Bene, è possibile utilizzare GCM con XMPP. Il nuovo GCM Cloud Connection Server consente di utilizzare il protocollo XMPP per una comunicazione bidirezionale (da cloud a dispositivo e da dispositivo a cloud) tra il server e l'applicazione Android.

Il GCM cloud Connection Server (CCS) consente ai server di terze parti per comunicare con i dispositivi Android stabilendo una connessione TCP persistente con i server di Google che utilizzano il protocollo XMPP. Questa comunicazione è asincrona e bidirezionale.

+0

Farò un tentativo. Vedo come questa potrebbe essere una buona soluzione. Una volta che la soluzione ha funzionato per me, accetterò la tua risposta :) – Max

+0

Beh, vale la pena provare, ma non dimenticare che è una funzione di prova, quindi potrebbe non essere ancora pronta per la produzione. – Eran

+0

Speravo di evitare l'utilizzo di GCM, dal momento che era necessario un account google sul dispositivo per ricevere una notifica push, tuttavia la vedo come l'unica opzione al momento. Grazie ancora per la tua risposta. – Max

-3

In openfire viene eseguito automaticamente, i messaggi verranno ricevuti dall'utente quando l'utente si connette. Quindi nessuna preoccupazione invia un messaggio a un utente offline e quando l'utente arriva online il messaggio verrà automaticamente inviato all'utente.

+0

Beh, questo è vero, tuttavia mi piacerebbe creare un Instant Messenger, che richiede una notifica push nel caso in cui l'utente sia offline. Voglio che l'utente sia informato una volta inviato un messaggio (una notifica push). – Max

+1

Perché non si esegue un servizio in background e si mantiene la connessione a OpenFire? –

8

Sto studiando il fuoco aperto e ho trovato alcune buone opzioni che vorrei condividere con voi. Ho trovato un plugin in github e lo testerò questa settimana. Sembra che sarà una buona soluzione per il tuo obiettivo e al mio: https://github.com/meisterfuu/Openfire-GCM/

Un'altra opzione è quella di utilizzare CallbackOnOffline plugin che chiama un URL specificato con Da e parametri. Questo URL potrebbe essere un endpoint nel tuo servizio web e con tali dati (da e verso) potresti ottenere l'ID associato per il push nella tua base e fare una spinta.

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

+0

Openfire-GCM non funziona. Hai forse una versione aggiornata? – Pierre