NotificationListenerService- und Doze-Modus und App Standby

9

Ich habe eine App, die Telefonbenachrichtigungen abhört und über die MessageApi eine Nachricht an eine Android Wear-Uhr sendet. Alles funktioniert gut bis auf einige Geräte mit Android 6, insbesondere Huawei Mate 8 (sieht aus wie alle Huawei Android 6 dies tun).

Huawei hat eine eigene Implementierung der Hintergrundverarbeitung von Freezing 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 mit der aufgezeichneten Geschichte bestätigt.

Irgendwelche Ideen, wie man das für diese Telefone repariert, besonders das Huawei Mate 8 mit Android 6 mit Doze-Modus?

Was ist das korrekte Verhalten von NotificationListenerService , während sich das Gerät im Schlafmodus befindet und / oder sich die App im Standby-Modus befindet?

BEARBEITEN

Benutzer haben außerdem bestätigt, dass sich ihre Telefone nicht im Energiesparmodus befinden, was sich auch auf Hintergrund-Apps und deren 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 N-Vorschau funktioniert gut auf Nexus-Geräten.

BEARBEITEN 2

Ich habe einen optionalen Vordergrunddienst hinzugefügt ( startForeground() ), sodass meine App im Benachrichtigungscenter permanent benachrichtigt wird. Daher sollte meine App von jeder Batterieoptimierung ausgeschlossen werden. Für die Vordergrund Service Benachrichtigung habe ich eine Priorität von NotificationCompat.PRIORITY_MIN verwendet und ich habe das Notification.FLAG_ONGOING_EVENT Flag hinzugefügt. Dies half ein wenig auf den Huawei Handys, aber nicht viel, jetzt kommen die verzögerten Benachrichtigungen in meinem NotificationListenerService direkt nach dem Einschalten des Bildschirms statt nach dem Öffnen meiner App. Ich verwende nicht startForeground() in meinem NotificationListenerService , sondern in einem anderen Service , weil ich keine Kontrolle über seinen Lebenszyklus habe.

    
shelll 27.04.2016, 20:42
quelle

2 Antworten

2

Bei Huawei-Geräten (nicht sicher, ob sie auf alle Huawei-Geräte zutreffen) müssen Sie die Berechtigung für geschützte Apps anfordern, damit Ihre App nicht eingefroren wird, wenn sie in den Hintergrund tritt.

So erkennen Sie, ob ein Huawei-Gerät die Berechtigung für geschützte Apps hat:

%Vor%

So rufen Sie die Einstellungsseite für geschützte Huawei-Apps auf:

%Vor%

Leider habe ich keine Möglichkeit gefunden, zu überprüfen, ob der Nutzer Ihrer App eine geschützte App gewährt hat. Bitte teilen, wenn jemand weiß:)

Referenz: Ссылка

    
avelyne 01.06.2016 21:52
quelle
0

Ich wusste nichts über den Doze-Modus von Android, bis ich deinen Post gesehen habe. Dann lese ich diesen Artikel und so scheint es zu funktionieren! Wenn Sie im Doze-Modus Benachrichtigungen erhalten möchten, versuchen Sie PRIORITY_HIGH oder PRIORITY_MAX für Ihre Benachrichtigungspriorität zu verwenden, aber selbst wenn es funktioniert, scheint es nicht wirklich eine vollständige Lösung gemäß dem Artikel zu sein.

    
NecipAllef 27.05.2016 08:53
quelle