2013-02-07 28 views
7

Sono di fronte a uno strano problema. Ricevo notifiche push sul mio cellulare, se è connesso a Internet a quel punto quando il messaggio è stato inviato dal lato server. Ma se non è connesso a Internet in quel momento e piuttosto mi sto collegando ad internet dopo un po 'di tempo. Non sto ricevendo quella notifica. Secondo la mia conoscenza tutte quelle notifiche dovrebbero mostrare quando siamo online, perché il server GCM memorizza tutti quei messaggi. Ricevo notifiche per tutte le altre app. Inoltre ho dato il permesso di wakelock in manifest. Quale potrebbe essere il problema? Qualche cosa da lato server, lato client o mobile? Si prega di aiuto ...A volte non ricevendo notifica push GCM in Mobile

Questo valore è inviare al server GCM da server di terze parti (server .Net):

String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=‌​" + 
message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceToken + "" 

Grazie in anticipo

risposta

10

delay_while_idle=1 contraddice Also I have given wakelock permission in manifest

delay_while_idle=1 significa che il messaggio non raggiungerà il dispositivo se è inattivo (spento, offline, schermo bloccato, ecc.). Cambialo su 0 se vuoi che il tuo permesso di wakelock faccia qualche differenza.

Giusto per chiarire: il messaggio dovrebbe raggiungere il dispositivo dopo che si è fermato in stato di inattività (purché non sia rimasto inattivo per troppo tempo, dove "troppo lungo" è determinato dallo specifico time_to_live).

Ecco la citazione pertinente documentazione GCM:

delay_while_idle

Se incluso, indica che il messaggio non deve essere inviato immediatamente se il dispositivo è inattivo. Il server attenderà che il dispositivo diventi attivo , quindi verrà inviato solo l'ultimo messaggio per ogni valore di collapse_key . Opzionale. Il valore predefinito è false e deve essere un valore booleano JSON .

time_to_live

Da quanto tempo (in secondi), il messaggio deve essere tenuto in deposito GCM se il dispositivo non è in linea . Facoltativo (l'intervallo di tempo predefinito è 4 settimane e deve essere impostato su come numero JSON).

+0

Sei sicuro. Perché nella documentazione ho scoperto che il flag delay_while_idle dovrebbe essere vero. Quindi sul lato server usando .net server sto passando delay_while_idle = 1 (true), perché 0 (false). Se sei confermato, per favore fammi sapere ... – ARIJIT

+1

"ritardo mentre inattivo" significa esattamente quello che dice - ritardare la consegna dei messaggi mentre il dispositivo è inattivo. Quando il dispositivo torna a essere attivo (online, il display è acceso), il messaggio dovrebbe essere ricevuto. L'autorizzazione di Wakelock è rilevante se si desidera riattivare il dispositivo e visualizzare la notifica anche quando il dispositivo è bloccato. Ecco perché ha senso solo usarlo quando 'delay_while_idle = 0'. – Eran

+0

Grazie mille .... Inoltre è necessario aggiungere un valore incrementale al valore della chiave di compressione, cioè, score_update. – ARIJIT

Problemi correlati