O Google Play Services 8.4.0 quebra o Google Cloud Messaging para Android se o iOS também for usado

Existem várias postagens que descrevem aspectos desse problema, mas ainda não houve uma resposta satisfatória, por isso estou tentando agrupá-los todos aqui na esperança de obter uma resposta autorizada que possa resolver todos esses problemas.

Depois de atualizar o Google play services para 8.4.0, as notificações por push são exibidas por eles mesmos

A notificação do Android não está mostrando seu conteúdo quando o aplicativo não está sendo executado

o que significa gcm.notification.e = 1, na carga útil da notificação por push no Android?

A essência do problema é que, se você criar uma mensagem do GCM apenas com dados (ou seja, não usar o campo de notificação e, portanto, não pretender gerar uma notificação) E incluir conteúdo_available = True (necessário para obter o comportamento desejado) de clientes iOS) e, a partir da 8.4.0, isso gera uma notificação em branco indesejável no Android.Antes da 8.4.0, tudo funcionava bem.

As especificidades do problema parecem ser que, se o cliente Android recebe um campo GCM, ele não entende, em vez de apenas ignorá-lo, adiciona um campo "e = 1" (presumivelmente "e" significa erro?) Como uma notificaçãomesmo se não houvesse notificação na mensagem antes, fazendo com que ele acione o código que faz uma notificação aparecer, em vez do código que a direciona para o aplicativo a ser tratado.

Solução possível: imagino que se possa acompanhar o servidor de quais clientes eram iOS e quais clientes são Android, e incluir apenas a tag content_available para os clientes iOS, e esse problema seria resolvido. No entanto, não era necessário fazer isso no passado, e meu sistema foi construído com a ideia de que eu poderia ser independente dos tipos de clientes, como parece pretendido.

O fato de o sinalizador content_available causar repentinamente essas notificações em branco no Android parece um bug que foi introduzido recentemente, mas seria muito útil saber se é de fato um bug que pode ser corrigido na 8.5.0 (nesse caso, eu pode apenas compilar com 8.3.0 por enquanto até a versão 8.5.0), ou se pretende ser uma solução permanente. Se isso não mudar, a solução correta é acompanhar quais IDs de registro do GCM pertencem a dispositivos iOS e quais pertencem a dispositivos Android e, em seguida, enviar duas solicitações de GCM separadas todas as vezes?

Agradecemos antecipadamente por qualquer resposta oficial a esta pergunta da equipe do Google.

questionAnswers(3)

yourAnswerToTheQuestion