Ho un'app per Android che si basa su notifiche push GCM e, a volte, il dispositivo dell'utente smetterà di ricevere notifiche push. Il comportamento è abbastanza intermittente: su alcuni dispositivi, non fallirà mai e continuerà a funzionare per settimane o mesi, mentre su altri dispositivi, funzionerà per alcuni giorni, e poi smetterà semplicemente di ricevere push.Il dispositivo smette di ricevere messaggi GCM finché la rete non viene commutata
Ogni volta che il dispositivo ha smesso di funzionare, ho verificato che il dispositivo ha un codice valido da GCM e che il mio server sta inviando push a quel regId. Tuttavia, i registri mostrano che il dispositivo non sta ricevendo nulla. Ecco quello che i log su una spinta normale ricevono assomiglia:
05-15 10:39:21.091: V/GCMBroadcastReceiver(13766): onReceive: com.google.android.c2dm.intent.RECEIVE
05-15 10:39:21.091: V/GCMBroadcastReceiver(13766): GCM IntentService class: com.medigram.v2.GCMIntentService
05-15 10:39:21.091: V/GCMBaseIntentService(13766): Acquiring wakelock
05-15 10:39:21.111: V/GCMBaseIntentService(13766): Intent service name: GCMIntentService-468134393228-13
05-15 10:39:21.131: V/GCMBaseIntentService(13766): Releasing wakelock
05-15 10:39:21.171: V/GCMBroadcastReceiver(13766): onReceive: com.google.android.c2dm.intent.RECEIVE
05-15 10:39:21.171: V/GCMBroadcastReceiver(13766): GCM IntentService class: com.medigram.v2.GCMIntentService
05-15 10:39:21.171: V/GCMBaseIntentService(13766): Acquiring wakelock
05-15 10:39:21.241: V/GCMBaseIntentService(13766): Intent service name: GCMIntentService-468134393228-14
05-15 10:39:21.271: V/GCMBaseIntentService(13766): Releasing wakelock
Niente di tutto questo si presenta sui dispositivi che hanno smesso di ricevere spinte, e, di conseguenza, non è il metodo onMessage() della mia GCMIntentService chiamato .
La cosa strana è che quando passo la connessione del dispositivo da 3G/4G a Wi-Fi o viceversa, riprende a funzionare, e il dispositivo riceve tutti i push back-back in una volta. Cosa succede esattamente quando il tipo di connessione cambia?
In caso aiuta, qui ci sono alcune cose che ho provato su dispositivi in cui spinta sta lavorando per riprodurre manualmente il problema, ma senza alcun risultato:
-I primo pensiero potrebbe essere un problema di contesto, ma questo fu presto escluso quando il semplice cambio di rete risolse il problema. Ho provato a indagare ulteriormente utilizzando l'opzione di sviluppo 'Non tenere attività' e quindi eseguendo il backup dell'applicazione, ma ciò non ha avuto alcun effetto su push.
-Io ho provato a forzare l'arresto dell'applicazione per vedere se avrebbe causato il blocco del funzionamento, ma il problema non sembra avere nulla a che fare con l'arresto della forza dell'applicazione, poiché continua a funzionare.
-Ho provato a mettere il telefono in modalità aereo e tornare indietro, ma ho continuato a lavorare.
Apprezzerei molto se qualcuno potesse indicarmi la giusta direzione, poiché ho praticamente esaurito tutte le risorse su StackOverflow e Google. Sono ancora altrettanto clueless su questo problema come quando ho iniziato.
possibile duplicato [this] (http://stackoverflow.com/questions/13835676/google-cloud-messaging-messages-sometimes-not-received-until-network-state-cha) – Eran
Puoi fornire una panoramica dei progetti etup? È un progetto di biblioteca? La tua app invoca la gestione GCM da un progetto di libreria? In quali circostanze la tua app si registra su GCM e annulla la registrazione? –
Hai trovato una soluzione per questo? Anche io sto affrontando lo stesso problema. – keen