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 exclusión. 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 según lo que les importa. 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 para las notificaciones de aceptación
A partir de Android 13, las apps deben declarar su
intención de enviar notificaciones solicitando el
android.permission.POST_NOTIFICATION
permiso de tiempo de ejecución al 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, este parámetro de configuración se almacenaba en el sistema de notificaciones. Por lo tanto, los OEMs deben migrar los datos de notificación existentes sobre si una app puede enviar notificaciones, desde el 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 del usuario en un modelo de aceptación
En la siguiente tabla, se ilustra el comportamiento de las notificaciones para varias versiones de la app en un dispositivo que ejecuta Android 13:
| Dispositivo en Android 13 | Apps orientadas a Android 13 o versiones posteriores | Apps orientadas a versiones anteriores a Android 13 |
|---|---|---|
| Nueva instalación | Las notificaciones se bloquean hasta que la app lo solicita.
Las apps controlan cuándo solicitar permiso. |
Las notificaciones se bloquean hasta que el SO lo solicita.
El permiso se solicita en la primera ejecución de la app. |
| App existente (actualización) | Las notificaciones se permiten hasta que la app lo solicita.
Se otorga un permiso temporal hasta que la app lo solicite en la primera ejecución apta. |
Las notificaciones se permiten hasta que el SO lo solicita.
Se otorga un permiso temporal hasta la primera ejecución de la app. |
Lineamientos para la implementación
Para obtener información sobre 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 Android 13 o SDKs anteriores:
- Las apps recién instaladas en un dispositivo Android 13 no deben enviar una notificación sin que el usuario apruebe un mensaje de permiso.
- Si la app está orientada a Android 13 y versiones posteriores, las notificaciones deben bloquearse hasta que la app lo solicite, ya que la app 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.
Se debe permitir que cualquier app que existiera 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 y un restablecimiento, envíe notificaciones hasta la primera vez que el usuario inicie una actividad desde esa app.
En el caso de las apps orientadas al SDK de Android 13 y versiones posteriores, si el usuario no personalizó previamente la configuración de notificaciones para esta app a nivel de la app o de
NotificationChannel, revoca el otorgamiento de permiso temporal. Luego, las apps deben pedir permiso al usuario antes de que se les permita seguir enviando notificaciones.Si una app actualizada orientada a Android 13 no tiene actualmente 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 objetivo de versiones anteriores a Android 13, intercepta el primer inicio de actividad después de que la app haya creado al menos un
NotificationChannelpara mostrar un mensaje de permiso en el que se pregunte si el usuario desea recibir notificaciones de la app.Si un usuario personalizó previamente la configuración de notificaciones a nivel de la app o de
NotificationChannelpara 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 debe migrarse al sistema de permisos con la marcaFLAG_PERMISSION_USER_SET. No se debe mostrar ningún otro mensaje de permiso de notificación al usuario, a menos que la app lo solicite específicamente.
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 copia de seguridad generados desde un dispositivo Android 13 deben restablecerse en una versión anterior del SO, y los datos de copia de seguridad de una versión anterior del SO deben restablecerse 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 notificación.
Valida los cambios en los sistemas de notificaciones y permisos
Para validar la implementación, ejecuta las siguientes pruebas:
Pruebas de unidades según lo especificado en
PreferencesHelperTestyNotificationManagerServiceTest.Cualquier prueba manual que pruebe las actualizaciones y la copia de seguridad y el restablecimiento.
Cualquier prueba del sistema de permisos y notificaciones de CTS que envíe notificaciones. Algunas de estas pruebas se encuentran en cts/tests/tests/permission/, NotificationManagerTest.java, y cts/tests/tests/notificationlegacy/.