Ich habe eine Android-App, die auf GCM-Push-Benachrichtigungen angewiesen ist, und manchmal hört das Gerät eines Benutzers auf, Push-Benachrichtigungen zu erhalten. Das Verhalten ist ziemlich intermittierend: auf einigen Geräten wird es nie versagen und nur für Wochen oder Monate arbeiten, während es auf anderen Geräten für ein paar Tage funktioniert, und dann nach dem Zufallsprinzip aufhören, Pushs zu empfangen.
Jedes Mal, wenn das Gerät nicht mehr funktioniert, habe ich überprüft, dass das Gerät eine gültige Registrierung von GCM hat und dass mein Server Pushs an diese reg-ID sendet. Die Protokolle zeigen jedoch, dass das Gerät nichts empfängt. Hier sehen Sie, wie die Protokolle eines normalen Push-Vorgangs aussehen:
%Vor%Dies wird nicht auf den Geräten angezeigt, die keine Push-Nachrichten mehr erhalten haben. Daher wird auch die Methode onMessage () von GCMContentService nicht aufgerufen.
Das Seltsame ist, wenn ich die Geräteverbindung von 3G / 4G zu Wifi oder umgekehrt umstelle, fängt es wieder an zu arbeiten und das Gerät bekommt alle zurückgestoßenen Pushs auf einmal. Was genau passiert Wann ändert sich der Verbindungstyp?
Falls es hilft, hier sind einige Dinge, die ich auf Geräten versucht habe, wo Push arbeitet, um das Problem manuell zu reproduzieren, aber ohne Erfolg:
- Ich dachte zuerst, es könnte ein Kontexthema sein, aber das war schnell ausgeschlossen, wenn das Problem einfach durch den Wechsel des Netzwerks gelöst wurde. Ich habe trotzdem versucht, weiter zu forschen, indem ich die Entwickleroption "Aktivitäten nicht beibehalten" verwendete und dann die App mit Hintergrundinformationen behandelte, aber dies hatte keine Auswirkungen auf Push.
- Ich habe versucht, die App anzuhalten, um zu sehen, ob Push nicht mehr funktioniert, aber das Problem scheint nichts mit der gestoppten App zu tun zu haben, da sie weiter funktioniert.
>- Ich habe versucht, das Telefon in den Flugmodus zu versetzen und zurück zu kommen, aber Push funktioniert weiter.
Ich würde es sehr schätzen, wenn mir jemand in die richtige Richtung zeigen könnte, da ich alle Ressourcen auf Stackoverflow und Google ziemlich ausgeschöpft habe. Ich bin immer noch genauso ahnungslos wie zu diesem Zeitpunkt.
In der Regel sendet Android alle 28 Minuten auf der Mobilfunkverbindung und alle 15 Minuten auf Wifi einen Herzschlag. Sie können dies beheben, indem Sie diese beiden Absichten in kürzerer Zeit von Ihrer App aus senden.
com.google.android.intent.action.MCS_HEARTBEAT
com.google.android.intent.action.GTALK_HEARTBEAT
%Vor%Sie können hier
lesenTags und Links android push-notification google-cloud-messaging