As notificações no Android 13 usam um modelo opt-in, que é uma mudança em relação às versões anteriores do Android, que usam um modelo opt-out. No Android 13, todos os aplicativos devem pedir permissão aos usuários antes de enviar avisos de notificação. Esse modelo ajuda a reduzir interrupções de notificações, minimiza a sobrecarga de informações e ajuda os usuários a controlar quais notificações aparecem com base no que é importante para eles. Para apoiar o modelo opt-in, os OEMs devem implementar mudanças nos sistemas de notificação e permissão de tempo de execução.
Esta página descreve o que os OEMs devem implementar para dar suporte a essa mudança e como validar a implementação.
Implementar mudanças para notificações de aceitação
A partir do Android 13, os aplicativos devem declarar sua intenção de enviar notificações solicitando a permissão de tempo de execução android.permission.POST_NOTIFICATION
do sistema antes de poder enviar notificações.
No Android 13 e superior, a configuração que determina se um aplicativo pode enviar notificações ao usuário fica armazenada no sistema de permissões. Antes do Android 13, essa configuração era armazenada no sistema de notificação. Conseqüentemente, os OEMs devem migrar os dados de notificação existentes sobre se um aplicativo tem permissão para enviar notificações, do sistema de notificação para o sistema de permissão de tempo de execução. Os OEMs também devem manter APIs existentes no sistema de notificação que apresentam esses dados aos desenvolvedores de aplicativos.
As alterações nos sistemas de notificação e permissão baseiam -se no modelo de aceitação do comportamento de notificação do usuário e são descritas na seção Diretrizes para implementação .
Comportamento das notificações do usuário em um modelo opt-in
A tabela a seguir ilustra o comportamento de notificação para várias versões de apps em um dispositivo com Android 13:
Dispositivo no Android 13 | Aplicativos direcionados ao Android 13 ou superior | Aplicativos direcionados a versões anteriores ao Android 13 |
---|---|---|
Nova instalação | As notificações são bloqueadas até serem solicitadas pelo aplicativo. Os aplicativos controlam quando pedir permissão. | As notificações são bloqueadas até serem solicitadas pelo sistema operacional. A permissão é solicitada na primeira execução do aplicativo. |
Aplicativo existente (atualização) | As notificações são permitidas até que sejam solicitadas pelo aplicativo. A permissão temporária é concedida até que o aplicativo solicite na primeira corrida de qualificação. | As notificações são permitidas até que sejam solicitadas pelo sistema operacional. A permissão temporária é concedida até a primeira execução do aplicativo. |
Diretrizes para implementação
Para implementação de referência, consulte serviço de notificação , serviço de permissão e serviço de política . Para implementar exceções para manipuladores de permissão padrão, consulte Permissões de tempo de execução .
Durante a implementação, use as seguintes diretrizes sobre o comportamento de notificação do usuário para apps direcionados ao Android 13 ou SDKs anteriores:
- Aplicativos recém-instalados em um dispositivo Android 13 não devem enviar uma notificação sem que o usuário aprove uma solicitação de permissão.
- Se o aplicativo for direcionado às versões Android 13 e superiores, as notificações deverão ser bloqueadas até que sejam solicitadas pelo aplicativo, pois o aplicativo controla quando e se solicitar permissão do usuário.
- Se o aplicativo for direcionado a versões anteriores ao Android 13, as notificações deverão ser bloqueadas até que sejam solicitadas pelo sistema operacional. O sistema operacional deve mostrar o prompt de permissão na primeira execução do aplicativo.
Qualquer app que existia no dispositivo antes de uma atualização para o Android 13, ou qualquer app que foi restaurado por meio de backup e restauração, deve ter permissão para enviar notificações até a primeira vez que o usuário iniciar uma atividade nesse app.
Para aplicativos direcionados ao SDK das versões Android 13 e superiores, se o usuário não tiver personalizado anteriormente as configurações de notificação para esse aplicativo no nível do aplicativo ou
NotificationChannel
, revogue a concessão de permissão temporária. Os aplicativos devem então pedir permissão ao usuário antes de continuarem a enviar notificações.Se um aplicativo atualizado direcionado ao Android 13 não tiver atualmente a permissão de notificação por meio da concessão de atualização temporária e o usuário o tiver iniciado pelo menos uma vez, o aplicativo deverá mostrar um prompt de permissão de notificação antes de poder executar quaisquer outros serviços em primeiro plano.
Para aplicativos que têm um SDK de destino de versões anteriores ao Android 13, intercepte a primeira inicialização de atividade depois que o aplicativo tiver criado pelo menos um
NotificationChannel
para mostrar um prompt de permissão perguntando se o usuário deseja receber notificações do aplicativo.Se um usuário personalizou anteriormente as configurações de notificação no nível do aplicativo ou
NotificationChannel
para um aplicativo no dispositivo de atualização ou em um backup que está sendo restaurado no dispositivo, a configuração no nível do aplicativo deverá ser migrada para o sistema de permissão com o sinalizadorFLAG_PERMISSION_USER_SET
. Nenhum outro prompt de permissão de notificação deve ser mostrado ao usuário, a menos que o aplicativo solicite especificamente.
O backup e a restauração devem ser compatíveis com versões anteriores e futuras entre um dispositivo Android 13 e um dispositivo de uma versão anterior do sistema operacional. Os dados de backup gerados a partir de um dispositivo Android 13 devem ser restaurados em uma versão anterior do sistema operacional, e os dados de backup de uma versão anterior do sistema operacional devem ser restaurados em um dispositivo Android 13.
As notificações de mídia associadas à reprodução de mídia em andamento devem estar isentas da permissão de notificação.
Validar alterações nos sistemas de notificação e permissão
Para validar a implementação, execute os seguintes testes:
Testes de unidade conforme especificado em
PreferencesHelperTest
,NotificationManagerServiceTest
.Qualquer teste manual que teste atualizações, backup e restauração.
Qualquer teste do sistema de permissão e notificação CTS que envia notificações. Alguns desses testes estão localizados em cts/tests/tests/permission/ , NotificationManagerTest.java e cts/tests/tests/notificationlegacy/ .