Você tem duas opções para atribuir a prioridade de entrega para mensagens downstream no Android: prioridade normal e alta. A entrega de mensagens de prioridade normal e alta funciona da seguinte forma:
Prioridade normal. Essa é a prioridade padrão para mensagens de dados. As mensagens com prioridade normal são entregues imediatamente quando o dispositivo não está em suspensão. Quando o dispositivo está no modo Soneca, a entrega pode ser adiada para economizar bateria até que esse modo seja alterado. Para mensagens menos afetadas pelo tempo, como enviar notificações de novos e-mails, manter a sincronização da sua IU ou sincronizar os dados do app em segundo plano, escolha a prioridade normal de entrega.
Ao receber uma mensagem de prioridade normal no Android que solicite uma sincronização de dados em segundo plano para o aplicativo, é possível agendar uma tarefa com o WorkManager (em inglês) que lidará com ela quando a rede estiver disponível.
Prioridade alta. O FCM tenta enviar mensagens de prioridade alta imediatamente, permitindo que o FCM ative um dispositivo em suspensão quando necessário e execute tarefas de processamento limitadas (inclusive acesso muito limitado à rede). As mensagens de prioridade alta devem resultar geralmente na interação do usuário com o app ou as notificações dele.
Processamento de mensagens e redução de prioridade no Android
As mensagens de prioridade alta no Android são destinadas a conteúdo urgente e visível pelo usuário. Além disso, elas precisam gerar notificações voltadas para o usuário. Se FCM detecta um padrão no qual as mensagens não resultam em notificações voltadas para o usuário o Google Play Services pode reduzir a prioridade suas mensagens para normal ou delegá-las.
O FCM usa sete dias de comportamento da mensagem ao determinar se é necessário remover a prioridade ou usar o proxy. Essa decisão é feita individualmente para cada instância do aplicativo. Se, em resposta a mensagens de prioridade alta, as notificações forem exibidas de maneira visível para o usuário, suas futuras mensagens de prioridade alta não serão afetadas.
Delegação de notificações com o Google Play Services
Para as mensagens de notificação de alta prioridade (não mensagens de dados) e que atendam a determinados critérios o Google Play Services as usa com proxy em vez de priorizá-las. Isso significa que as notificações são exibidas pelo Google Play Services em nome do app, sem a necessidade de iniciá-lo. Isso é feito para oferecer uma experiência do usuário geral melhor em dispositivos Android.
As mensagens de notificação com proxy introduzem mudanças na forma como as análises relacionadas às mensagens recebidas são informadas:
- Para que a análise de notificações com proxy seja informada, seu app deve usar o SDK do FCM versão 24.0.0 ou mais recente.
- Você pode notar atrasos ou quedas no número de mensagens recebidas em comparação com o número antes da introdução das notificações com proxy. Isso ocorre porque as análises para notificações com proxy são apenas relatadas quando o aplicativo é iniciado e podem não ser relatadas se o Notificações não abrir o app.
O proxy de mensagens de notificação dessa maneira é o comportamento padrão para apps que usam o Android Q em diante e o Google Play Services versão 19054000 ou mais recente. As mensagens enviadas pela API HTTP v1 são encaminhadas com proxy, mas as mensagens enviadas pelo Console do Firebase ou pelas APIs legadas não são encaminhadas com proxy. Esse recurso está atualmente na versão Beta e está sujeito a mudanças.
Embora recomendemos deixar a delegação ativada para aproveitar os benefícios para a bateria e a memória do dispositivo, você pode desativar esse comportamento de qualquer uma das seguintes maneiras:
- No nível do app: no manifesto do app, adicione a diretiva
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
. - No nível da instância do app: para a instância do app, defina
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
no fluxo da interface do app, dependendo do caso de uso específico. - Por mensagem: defina a chave
proxy
comoDENY
no objetoAndroidNotification
para a solicitação de envio.
Como avaliar a redução de prioridade da mensagem no Android
Mensagens individuais. Na entrega, é possível determinar se uma mensagem individual foi priorizada ou não, comparando a prioridade entregue do getPriority() com a prioridade original do getOriginalPriority()
Todas as mensagens. A API Aggregate Delivery Data do FCM pode informar qual porcentagem das suas mensagens para Android estão tendo a prioridade reduzida. Algumas mensagens podem ser omitidas dos relatórios de dados agregados, mas, no geral, fornecem uma visão global das taxas de redução de prioridade das mensagens. Consulte nosso artigo sobre dados de entrega agregados para mais informações e exemplos de código para consultar a API. Também é possível saber mais em API Explorer.
Notificações com proxy. As notificações com proxy não serão contabilizadas nas métricas atuais de exibição do FCM ou do GA. Por isso, pode haver uma queda de até 15% nas métricas de entrega de notificações. Para gerar relatórios sobre mensagens com proxy, use a API Aggregate Delivery Data do FCM. O
ProxyNotificationInsightPercents
informa a porcentagem de erros nas notificações com proxy, bem como detalhes sobre mensagens que não puderam ser enviadas com proxy.
Solução de problemas
Verifique se a instância do app tem as notificações ativadas. Se o usuário tiver desativado a permissão de notificação do seu app, nenhuma das notificações será postada. Por isso, suas mensagens não serão priorizadas. Verifique se as notificações estão ativadas antes de enviar mensagens de prioridade alta para uma instância do aplicativo.
Não ligue para casa antes de postar uma notificação. Como uma pequena parcela dos dispositivos móveis Android funciona em redes de alta latência, evite abrir uma conexão com seus servidores antes de exibir uma notificação. Retornar uma chamada ao servidor antes de o tempo de processamento permitido terminar pode ser arriscado para usuários em redes de alta latência. Em vez disso, inclua o conteúdo da notificação na mensagem do FCM e exiba-o imediatamente. Para sincronizar conteúdo extra no app para Android, programe uma tarefa com o WorkManager (em inglês) para lidar com isso em segundo plano.