Ich habe eine App, die nach Telefonbenachrichtigungen lauscht und eine Nachricht an eine Android Wear-Uhr über die MessageApi
sendet. Alles funktioniert gut, bis auf einige Geräte mit Android 6, vor allem Huawei Mate 8 (sieht aus wie alle Huawei Android 6 dies tun).NotificationListenerService- und Doze-Modus und App Standby
Huawei hat eine eigene Implementierung der Hintergrundverarbeitung von Freeze-Apps (Protected Apps). Aus den Benutzerberichten habe ich bestätigt, dass meine App eine Ausnahme in den geschützten Apps von Huawei und auch im Doze Modus von Android 6 hat. Die App funktioniert OK, aber nach genau 15 Minuten mit Display aus hört meine App auf, Nachrichten an die verbundene Android Wear-Uhr zu senden. Meine App kann auch den Verlauf der empfangenen Benachrichtigungen aufzeichnen und nach 15 Minuten kommt nichts an ... bis das Display des Telefons eingeschaltet wird und meine App geöffnet wird. Danach kommen alle Benachrichtigungen, die angekommen sein sollten, während das Display des Telefons ausgeschaltet war, in meine NotificationListenerService
Implementierung und werden auf einmal an die Uhr gesendet. Dies wird auch durch die aufgezeichnete Historie bestätigt.
Irgendwelche Ideen, wie das für diese Telefone zu beheben, vor allem das Huawei Mate 8 mit Android 6 mit Doze-Modus?
Was ist das korrekte Verhalten der NotificationListenerService
, während sich das Gerät im Schlafmodus befindet und/oder sich die App im Standby-Modus befindet?
EDIT
Benutzer haben auch bestätigt, dass ihre Telefone nicht in einem Energiesparmodus sind die auch Hintergrund-Anwendungen und ihre Dienste auswirkt. Dieser Fehler sieht aus wie Huawei exklusiv, weil keine Nexus-Benutzer dies gemeldet haben und mein OnePlus One mit M tut dies auch nicht. Auch die N-Vorschau funktioniert auf Nexus-Geräten gut.
EDIT 2
Ich habe einen optionalen Vordergrund Dienst (startForeground()
) so meine app hat eine permanente Benachrichtigung im Infozentrum hinzugefügt, so sollte meine App von jeder Batterie Optimierung ausgeschlossen werden. Für die Vordergrunddienstbenachrichtigung verwendete ich eine Priorität von NotificationCompat.PRIORITY_MIN
und ich fügte das Notification.FLAG_ONGOING_EVENT
Flag hinzu. Dies half ein wenig auf den Huawei-Handys, aber nicht viel, jetzt kommen die verzögerten Benachrichtigungen in meine NotificationListenerService
direkt nach dem Einschalten des Bildschirms statt nach dem Öffnen meiner App. Ich verwende nicht die startForeground()
in meinem NotificationListenerService
, sondern in einem anderen Service
, weil ich keine Kontrolle über seinen Lebenszyklus habe.
Dieser Artikel ist über Push-Benachrichtigungen und nicht die lokale Benachrichtigungen. Ich habe keinen Server für meine App, er ist komplett offline, sodass ich das Telefon nicht über Push-Benachrichtigungen mit hoher Priorität wecken kann. Es ist auch unmöglich, eine Push-Benachrichtigung an ein Telefon zu senden, wenn das Telefon eine Benachrichtigung zeigt ... – shelll
Laut dem Artikel, ja Sie können das Gerät nicht wecken – NecipAllef