Las notificaciones en Android 13 usan un modelo de aceptación, que es un cambio con respecto a las versiones anteriores de Android, que usan un modelo de rechazo. En Android 13, todas las apps deben pedir permiso a los usuarios antes de enviar mensajes de notificación. Este modelo ayuda a reducir las interrupciones de las notificaciones, minimiza la sobrecarga de información y ayuda a los usuarios a controlar qué notificaciones aparecen en función de lo que es importante para ellos. Para admitir el modelo de aceptación, los OEMs deben implementar cambios en los sistemas de permisos de tiempo de ejecución y notificaciones.
En esta página, se describe lo que los OEMs deben implementar para admitir este cambio y cómo validar la implementación.
Implementa cambios en las notificaciones de aceptación
A partir de Android 13, las apps deben declarar su intención de enviar notificaciones solicitando el permiso de tiempo de ejecución android.permission.POST_NOTIFICATION
del sistema antes de poder enviarlas.
En Android 13 y versiones posteriores, el parámetro de configuración que determina si una app puede enviar notificaciones al usuario se almacena en el sistema de permisos. Antes de Android 13, esta configuración se almacenaba en el sistema de notificaciones. Por lo tanto, los OEM deben migrar los datos de notificación existentes sobre si una app puede enviar notificaciones del sistema de notificaciones al sistema de permisos de tiempo de ejecución. Los OEMs también deben mantener las APIs existentes en el sistema de notificaciones que muestran esos datos a los desarrolladores de apps.
Los cambios en los sistemas de notificaciones y permisos se basan en el modelo de aceptación del comportamiento de las notificaciones del usuario y se describen en la sección Lineamientos para la implementación.
Comportamiento de las notificaciones de usuario en un modelo de aceptación
En la siguiente tabla, se ilustra el comportamiento de las notificaciones de varias versiones de la app en un dispositivo que ejecuta Android 13:
Dispositivo con Android 13 | Apps orientadas a Android 13 o versiones posteriores | Apps orientadas a versiones anteriores a Android 13 |
---|---|---|
Nueva instalación | Se bloquearán las notificaciones hasta que la app las solicite.
Las apps controlan cuándo solicitar permiso. |
Las notificaciones se bloquean hasta que el SO lo solicite.
Se solicita el permiso en la primera ejecución de la app. |
App existente (actualización) | Las notificaciones se permiten hasta que la app lo solicite.
Se otorga un permiso temporal hasta que la app lo solicite en la primera ejecución que cumpla con los requisitos. |
Las notificaciones se permiten hasta que el SO lo solicite.
El permiso temporal se otorga hasta la primera ejecución de la app. |
Lineamientos para la implementación
Para la implementación de referencia, consulta el servicio de notificaciones, el servicio de permisos y el servicio de políticas. Para implementar excepciones para los controladores de permisos predeterminados, consulta Permisos de tiempo de ejecución.
Durante la implementación, usa los siguientes lineamientos sobre el comportamiento de las notificaciones del usuario para las apps orientadas a SDKs de Android 13 o versiones anteriores:
- Las apps instaladas recientemente en un dispositivo con Android 13 no deben enviar una notificación sin que el usuario apruebe una solicitud de permiso.
- Si la app se orienta a versiones de Android 13 y posteriores, las notificaciones deben bloquearse hasta que la app lo solicite, ya que esta controla cuándo y si se debe solicitar el permiso del usuario.
- Si la app está orientada a versiones anteriores a Android 13, las notificaciones deben bloquearse hasta que el SO lo solicite. El SO debe mostrar el mensaje de permiso en la primera ejecución de la app.
Cualquier app que haya existido en el dispositivo antes de una actualización a Android 13, o cualquier app que se haya restablecido a través de una copia de seguridad, debe poder enviar notificaciones hasta la primera vez que el usuario inicie una actividad desde esa app.
En el caso de las apps que se orientan al SDK de las versiones de Android 13 y versiones posteriores, si el usuario no personalizó previamente la configuración de notificaciones de esta app en el nivel de la app o de
NotificationChannel
, revoca el otorgamiento de permisos temporal. Luego, las apps deben solicitarle permiso al usuario para poder seguir enviando notificaciones.Si una app actualizada que se orienta a Android 13 no tiene el permiso de notificación a través del otorgamiento de actualización temporal y el usuario la inició al menos una vez, la app debe mostrar un mensaje de permiso de notificación antes de que se le permita ejecutar más servicios en primer plano.
En el caso de las apps que tienen un SDK de destino de versiones anteriores a Android 13, intercepta el primer inicio de actividad después de que la app haya creado al menos un
NotificationChannel
para mostrar un mensaje de permiso en el que se le pregunte al usuario si quiere recibir notificaciones de la app.Si un usuario personalizó anteriormente la configuración de notificaciones a nivel de la app o de
NotificationChannel
para una app en el dispositivo que se actualiza o en una copia de seguridad que se restablece en el dispositivo, la configuración a nivel de la app se debe migrar al sistema de permisos con la marcaFLAG_PERMISSION_USER_SET
. No se debe mostrar ninguna otra solicitud de permiso de notificación al usuario, a menos que la app lo solicite de forma específica.
La copia de seguridad y el restablecimiento deben ser compatibles con versiones anteriores y posteriores entre un dispositivo Android 13 y un dispositivo de una versión anterior del SO. Los datos de la copia de seguridad generados desde un dispositivo Android 13 se deben restablecer en una versión anterior del SO, y los datos de la copia de seguridad de una versión anterior del SO se deben restablecer en un dispositivo Android 13.
Las notificaciones de contenido multimedia asociadas con la reproducción de contenido multimedia en curso deben estar exentas del permiso de notificaciones.
Valida los cambios en los sistemas de notificaciones y permisos
Para validar la implementación, ejecuta las siguientes pruebas:
Pruebas de unidades, como se especifica en
PreferencesHelperTest
yNotificationManagerServiceTest
Cualquier prueba manual que pruebe las actualizaciones y las copias de seguridad y el restablecimiento
Cualquier prueba del sistema de notificaciones y permisos de CTS que envíe notificaciones Algunas de estas pruebas se encuentran en cts/tests/tests/permission/, NotificationManagerTest.java y cts/tests/tests/notificationlegacy/.