2010-01-16 15 views
21

Sto sviluppando un'applicazione Android che deve comunicare bidirezionalmente con un server. Con ciò intendo che il server o il dispositivo possono inviare un messaggio in qualsiasi momento, con una quantità arbitraria di tempo tra i messaggi. L'invio di dati dal dispositivo al server è un compito comune e penso sia ben compreso, ma non sono sicuro di quale sia l'approccio migliore per andare nella direzione opposta dal server al dispositivo.Miglior approccio per inviare dati da un server a un dispositivo Android

Penso che fare il polling periodico del dispositivo al server possa essere una cattiva idea a causa della latenza e dello scarico della batteria, ma sarei disposto a considerare questa opzione. Il mio piano al momento è quello di inviare messaggi di testo dal server tramite un ponte da email a SMS e di far eseguire alla mia app un servizio per ricevere e gestire questi messaggi.

La domanda che ho è se ci sono delle buone pratiche per questo scenario, e se usare i messaggi di testo ha alcuni aspetti negativi che non sono riuscito a prendere in considerazione. Per rispondere a questa domanda, voglio presumere che gli utenti dispongano di un piano dati di testo illimitato, quindi il pagamento per testo non costituirà un problema.

risposta

18

Questo è ciò che XMPP eccelle a. :)

Vedere la libreria Smack Java o asmack per una versione personalizzata per Android.

E per un'app Android che utilizza il supporto per comunicazioni bidirezionali a lunga durata, vedere BuddyDroid.

Modifica, in risposta al commento qui sotto:
Il vantaggio di questo approccio nel tuo caso è che si può spingere una quantità illimitata di al cliente immediatamente, senza la latenza (o la consegna non garantito) di SMS. XMPP offre anche sicurezza di connessione, compressione e la possibilità di sovrapporre le proprie estensioni su di esso.
Inoltre, — e non so chi si sta prendendo di mira o se questo si applica a — in questo modo non è necessario fare affidamento sull'utente che ha un piano di testo illimitato (ma ovviamente è necessario un piano dati).

Vedere Prosody o Tigase se siete interessati e cercate un server (ce ne sono diversi open source).

Tuttavia, dopo aver riletto la tua domanda, sembra implicare un basso tasso di attività, quindi forse non vale la pena mantenere (login, rilevare la perdita di connessione, riconnessione) una sessione XMPP per qualunque sia l'applicazione.

Infine .. mentre è possibile intercettare i messaggi SMS in arrivo su un dispositivo Android, è possibile non impedire loro di presentarsi nella casella di posta di messaggistica dell'utente. Quindi puoi elaborare l'SMS in arrivo, ma non puoi quindi dire al sistema di scartare il messaggio.
di recente ho scoperto questo non è vero: se si definisce un attributo android:priority sul tuo SMS-ascolto intent-filter, sarà quindi ricevere un "ordered broadcast" che consente di cancel la trasmissione SMS in arrivo prima che sia propagato ad altre applicazioni, come la casella di posta SMS. Nota che funziona solo su Android 1.6 e versioni successive.

+0

Sembra interessante, e sicuramente lo esaminerò. XMPP è preferibile agli SMS per qualsiasi motivo diverso dal fatto che non utilizzerebbe effettivamente i messaggi SMS? – newdayrising

+0

Ho modificato la mia risposta originale per includere un intero carico di cose. –

+1

Grazie per le informazioni estremamente utili sull'intercettazione dei messaggi SMS! – newdayrising

Problemi correlati