Google Play Services 8.4.0 unterbricht Google Cloud Messaging für Android, wenn auch iOS verwendet wird

Es gibt mehrere Posts, die Aspekte dieses Problems beschreiben, aber es gibt noch keine zufriedenstellende Antwort. Daher versuche ich, sie alle hier zusammenzufassen, in der Hoffnung, eine verbindliche Antwort zu erhalten, die all diese Probleme lösen kann.

Nach der Aktualisierung der Google Play-Dienste auf 8.4.0 werden die Push-Benachrichtigungen von ihnen selbst angezeigt.

Android-Benachrichtigung zeigt den Inhalt nicht an, wenn die App nicht ausgeführt wird

Was bedeutet gcm.notification.e = 1, in Push-Benachrichtigung Payload auf Android?

Der Kern des Problems ist, dass, wenn Sie eine GCM-Nachricht nur mit Daten erstellen (dh das Benachrichtigungsfeld nicht verwenden und daher nicht beabsichtigen, eine Benachrichtigung zu generieren) UND Sie content_available = True einschließen (was erforderlich ist, um die gewünschte zu erhalten) Verhalten von iOS-Clients) erzeugt dann seit 8.4.0 eine unerwünschte leere Benachrichtigung in Android. Vor 8.4.0 hat alles einwandfrei funktioniert.

Die Besonderheiten des Problems scheinen zu sein, dass, wenn der Android-Client ein GCM-Feld empfängt, das er nicht versteht, statt es einfach zu ignorieren, ein Feld "e = 1" (vermutlich bedeutet "e" Fehler?) Als ein Feld hinzugefügt wird Benachrichtigungeven wenn es keine Benachrichtigung in der Nachricht vor @ g, wodurch der Code ausgelöst wird, der eine Benachrichtigung anzeigt, und nicht der Code, der die Benachrichtigung an die zu bearbeitende Anwendung weiterleitet.

Mögliche Problemumgehung: Ich stelle mir vor, man könnte auf dem Server verfolgen, welche Clients iOS und welche Android-Clients waren, und nur das content_available-Tag für die iOS-Clients einschließen, und dieses Problem wäre gelöst. In der Vergangenheit war dies jedoch nicht erforderlich, und mein System wurde mit der Idee erstellt, dass ich den Client-Typen gegenüber agnostisch sein könnte, wie es den Anschein hat.

Die Tatsache, dass das content_available-Flag plötzlich diese leeren Benachrichtigungen unter Android verursacht, scheint ein Fehler zu sein, der neu eingeführt wurde. Es wäre jedoch sehr nützlich zu wissen, ob es sich tatsächlich um einen Fehler handelt, der in 8.5.0 behoben werden könnte (in diesem Fall) Ich könnte vorerst nur mit 8.3.0 bauen, bis 8.5.0 herauskommt, oder wenn es eine dauerhafte Lösung sein soll. Wenn sich dies nicht ändern wird, ist es dann die richtige Lösung, zu protokollieren, welche GCM-Registrierungs-IDs zu iOS-Geräten und welche zu Android-Geräten gehören, und jedes Mal zwei separate GCM-Anforderungen zu senden?

Vielen Dank im Voraus für die offiziellen Antworten des Google-Teams auf diese Frage.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage