2013-01-03 4 views
8

Ho iniziato a integrare GCM nella mia applicazione Android. Con l'aiuto di startup tutorial ho installato la demo di esempio e funziona perfettamente. Ho anche capito i diversi response statuses ricevuti quando il mio server invia il messaggio a GCM, che a mio avviso indica lo stato della comunicazione tra il mio server e il server GCM.Il mio server può ricevere il riconoscimento da GCM una volta che il messaggio previsto viene consegnato all'app Android?

La mia domanda è, c'è un modo per ottenere lo stato della comunicazione tra il server GCM e l'applicazione Android? Fondamentalmente un riconoscimento che indica se il messaggio previsto è stato consegnato correttamente o meno. Inoltre, ho letto che lo default timeout è di 4 settimane, a meno che non sia impostato il flag time_to_live, il che mi consente di capire che GCM mantiene la coda e garantirebbe sicuramente la consegna del messaggio.

Tuttavia, per garantire l'affidabilità, come server di terze parti, dovrei mai aver bisogno di riprovare a inviare lo stesso messaggio (se non è già stato curato dall'infrastruttura GCM)? se ho bisogno di prendermi cura del nuovo tentativo, come determinare l'errore?

Un modo che ho è, per definire un id push e inviarlo insieme al messaggio, una volta ricevuto l'app Android segnalerà il server con il rispettivo id push. Se la risposta non viene ricevuta entro un tempo specificato, il server riproverà a inviare il messaggio. Questo approccio è definito nella seconda risposta dello post e consentirà di monitorare il tempo impiegato dal GCM (specialmente per il team addetto al controllo qualità).

risposta

2

Non credo che sia possibile ottenere tali informazioni dai server GCM. Ciò significa che dovrai fare affidamento su un altro metodo di comunicazione (come hai descritto) tra le app client che ricevono correttamente il tuo messaggio e il tuo server.

La risposta che si ottiene dai server GCM (come sapete) semplicemente permette you know either:

success: Number of messages that were processed without an error. 

o

failure: Number of messages that could not be processed. 

Il che significa che si può sapere quali la registrazione Ids sono stati elaborati correttamente (ad esempio valido valori, ancora registrati con GCM), ma non indipendentemente dal fatto che i messaggi siano stati consegnati correttamente al dispositivo attuale.

+0

Grazie Selsine. Ho dato più pensieri sullo stesso e credo che il messaggio inviato se supponiamo non sia stato consegnato non è perso almeno! quindi non ha senso inviare l'altro perché quello già spedito verrà consegnato prima o poi con l'aiuto del meccanismo GCM. –