Ho un'app che ascolta le notifiche del telefono e invia un messaggio a un orologio Android Wear tramite lo MessageApi
. Tutto funziona bene tranne alcuni dispositivi con Android 6, in particolare Huawei Mate 8 (sembra che tutti gli Huawei Android 6 lo facciano).NotificationListenerService e modalità Doze e App Standby
Huawei ha la propria implementazione dell'elaborazione in background delle applicazioni di blocco (app protette). Dai rapporti degli utenti ho confermato che la mia app ha un'eccezione nelle app protette di Huawei e anche nella modalità Doze di Android 6. L'app funziona correttamente, ma dopo esattamente 15 minuti con il display spento la mia app interrompe l'invio di messaggi all'app Android Wear collegato. La mia app può anche registrare la cronologia delle notifiche ricevute e nulla arriva dopo i 15 minuti ... finché il display del telefono non è acceso e la mia app è aperta. Dopo che tutte le notifiche che dovrebbero essere arrivate mentre il display del telefono era spento arrivano alla mia implementazione NotificationListenerService
e vengono inviate all'orologio, tutte in una volta. Questo è anche confermato dalla cronologia registrata.
Qualche idea su come risolvere questo problema con questi telefoni, in particolare l'Huawei Mate 8 con Android 6 con modalità Doze?
Qual è il comportamento corretto di NotificationListenerService
mentre il dispositivo è in modalità doze e/o l'app è in modalità standby?
EDIT
Gli utenti hanno anche confermato che i loro telefoni non sono in una modalità di risparmio energetico che interessa anche applicazioni in background e dei loro servizi. Questo bug sembra Huawei esclusivo perché nessun utente Nexus ha segnalato questo e il mio OnePlus One con M non lo sta facendo. Anche l'anteprima N funziona bene sui dispositivi Nexus.
EDIT 2
Ho aggiunto un servizio di primo piano opzionale (startForeground()
) quindi la mia applicazione ha una notifica permanente nel centro di notifica, quindi la mia app devono essere esclusi da ogni ottimizzazione della batteria. Per la notifica del servizio in primo piano ho utilizzato una priorità di NotificationCompat.PRIORITY_MIN
e ho aggiunto il flag Notification.FLAG_ONGOING_EVENT
. Questo ha aiutato un po 'i telefoni Huawei, ma non molto, ora le notifiche in ritardo arrivano nel mio NotificationListenerService
subito dopo l'accensione dello schermo, invece dopo aver aperto la mia app. Non uso lo startForeground()
nel mio NotificationListenerService
ma in un altro Service
perché non ho alcun controllo sul suo ciclo di vita.
Questo articolo è circa le notifiche push e notifiche non locali. Non ho un server per la mia app, è completamente offline, quindi non posso riattivare il telefono tramite notifica push ad alta priorità. Sarà anche impossibile inviare una notifica push a un telefono quando quel telefono mostra una notifica ... – shelll
Secondo l'articolo, sì, non si sarà in grado di riattivare il dispositivo – NecipAllef