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 e notificações. 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.
Alta prioridade. 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.
Como decidir entre mensagens de prioridade alta e normal
Embora as mensagens de prioridade normal sejam adequadas para atualizações gerais, escolha a prioridade alta quando precisar garantir a entrega imediata de assuntos ou ações urgentes. Como o tempo de entrega de mensagens de prioridade normal pode ser afetado pelo modo de suspensão, definir a maioria das notificações visíveis do usuário como de alta prioridade garante que elas sejam entregues imediatamente. Por exemplo, notificações como mensagens de chat, problemas com uma conta ou atualizações de entrega de comida precisam ter prioridade alta.
Processamento de mensagens de prioridade alta e normal
Para notificações de prioridade alta e normal recebidas em um dispositivo Android,
vários segundos são fornecidos para processar o payload da mensagem no
gerenciador onMessageReceived
. Para notificações que exigem processamento assíncrono
do payload da mensagem, recomendamos usar um modelo como
o WorkManager, já que ele pode exceder o tempo dado ao gerenciador
onMessageReceived
.
Para mensagens de alta prioridade, é possível programar um job priorizado usando o WorkManager do Android para garantir que essas notificações sejam priorizadas e concluídas.
Para mensagens de prioridade normal, é possível programar uma OneTimeWorkRequest regular usando o WorkManager do Android. Isso garante que o trabalho adicional necessário seja processado, sem usar o processamento priorizado.
Como definir a prioridade das mensagens
É possível enviar notificações aos usuários usando o Admin SDK, a API REST FCM e o console Firebase. Para mudar a configuração de prioridade da Admin SDK e da API REST da FCM, é necessário atualizar o payload JSON da mensagem. Use o exemplo de código abaixo para saber como definir a prioridade como alta. Para notificações enviadas do console, não há suporte para definir campos de notificação específicos do Android.
{
"message": {
"notification": {
"body": "Purchase exceeding $500 detected",
"title": "Credit card purchase"
},
"data": {
"purchaser": "Your child",
"items": "Gravity Defier Sneakers"
},
"android": {
"priority": "high"
},
"apns": {
"headers": {
"apns-priority": "5"
}
}
}
}
Testar as notificações de alta prioridade no modo Soneca
Para garantir que as notificações de alta prioridade sejam recebidas e processadas corretamente quando recebidas por um usuário, siga estas instruções para testar as notificações:
- Defina o dispositivo no modo Soneca usando as instruções em Testar seu app com a Soneca.
- Acesse o token de registro FCM do app no dispositivo de teste. Para mais informações sobre como acessar o token, consulte Enviar uma mensagem de teste para um app em segundo plano.
- Depois de ter o token FCM, envie a notificação de alta prioridade para o dispositivo de teste usando o código de envio de notificação FCM ou um comando cURL%3B%0A%7D)-,cURL,-curl%20%2DX) que tenha parâmetros de configuração correspondentes à notificação de alta prioridade.
Redução de prioridade de FCM de alta 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
As mensagens de notificação de alta prioridade que atendem a determinados critérios são usadas com proxy pelo Google Play Services em vez de serem priorizadas. 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 de atrasos de notificação
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.
Evite fazer outras chamadas de rede ao processar a 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 aplicativo para Android, programe uma tarefa com o WorkManager (em inglês) para lidar com isso em segundo plano.