Permiso de tiempo de ejecución: notificaciones

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Android 13 (nivel de API 33) introduce un nuevo permiso de tiempo de ejecución para enviar notificaciones no exentas desde una app: POST_NOTIFICATIONS. Este cambio ayuda a los usuarios a centrarse en las notificaciones que les resultan más importantes.

Te recomendamos que orientes tu app a Android 13 lo antes posible para aprovechar el control y la flexibilidad adicionales de esta función. Si sigues orientándola a 12L (nivel de API 32) o versiones anteriores, no podrás solicitar el permiso en el contexto de la funcionalidad de tu app.

Cómo usar el nuevo permiso

A fin de solicitar un nuevo permiso de notificación desde tu app, actualízala para que se oriente a Android 13 y completa un proceso similar al de solicitar otros permisos de tiempo de ejecución, como se muestra a continuación.

El permiso que debes declarar en el archivo del manifiesto de tu app aparece en el siguiente fragmento de código:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Las capacidades de la app dependen de la elección del usuario en el diálogo de permisos

En este diálogo, los usuarios tienen las siguientes acciones disponibles:

En las siguientes secciones, se describe el comportamiento de tu app según la acción que realice el usuario.

El usuario selecciona "Permitir"

Si el usuario selecciona Permitir, la app podrá hacer lo siguiente:

El usuario selecciona "No permitir"

Si el usuario selecciona No permitir, tu app no podrá enviar notificaciones. Todos los canales de notificaciones se bloquearán, excepto algunos roles específicos. Este comportamiento es similar al que ocurre cuando el usuario desactiva manualmente todas las notificaciones de tu app en la configuración del sistema.

Precaución: Si tu app se orienta a 12L (o versiones anteriores) y el usuario presiona No permitir, no se le volverá a preguntar, ni siquiera una vez, hasta que ocurra una de las siguientes situaciones:

  • El usuario desinstala y vuelve a instalar tu app.
  • Actualizas la app para que se oriente a Android 13.

El usuario descarta el diálogo

Si el usuario descarta el diálogo (es decir, no selecciona Permitir ni No permitir), no cambia el estado del permiso de notificaciones.

Efectos en apps instaladas recientemente

Si un usuario instala tu app en un dispositivo que ejecuta Android 13, sus notificaciones están desactivadas de forma predeterminada. Tu app debe esperar para enviar notificaciones hasta después de que solicites el nuevo permiso y el usuario se lo otorgue a tu app.

El momento en que aparece el diálogo del permiso se basa en la versión del SDK de destino de tu app:

  • Si tu app se orienta a Android 13 o versiones posteriores, tendrá control total sobre el momento en que se mostrará el diálogo del permiso. Aprovecha esta oportunidad para explicarles a los usuarios las razones por las que la app necesita este permiso y aliéntalos a que lo otorguen.
  • Si tu app se orienta a 12L (nivel de API 32) o versiones anteriores, el sistema mostrará el diálogo del permiso cuando, por primera vez, tu app inicia una actividad después de que crees un canal de notificaciones o cuando tu app inicie un actividad y, luego, crees tu primer canal de notificaciones. Por lo general, ocurre en el inicio de la app.

Efectos en actualizaciones de apps existentes

Para minimizar las interrupciones asociadas con el nuevo permiso de notificaciones, el sistema otorga, previa y automáticamente, el nuevo permiso de notificaciones a todas las apps aptas cuando el usuario actualiza su dispositivo a Android 13. En otras palabras, estas apps pueden continuar enviando notificaciones a los usuarios, y estos no verán un mensaje de permiso de tiempo de ejecución.

Elegibilidad para otorgamiento previo de permisos

A fin de que tu app sea apta para un otorgamiento previo automático, debe tener un canal de notificaciones existente y el usuario no debe inhabilitar de manera explícita sus notificaciones en un dispositivo que ejecute 12L o versiones anteriores.

Si el usuario inhabilitó las notificaciones de tu app en un dispositivo que ejecuta 12L o versiones anteriores, esa denegación se conservará cuando el dispositivo se actualice a Android 13 o versiones posteriores.

Exenciones

En esta sección, se incluye el conjunto de notificaciones y apps que están exentas del cambio de comportamiento de los permisos de notificaciones.

Sesiones de contenido multimedia

Las notificaciones relacionadas con sesiones multimedia están exentas de este cambio de comportamiento.

Apps configuradas para autoadministrar llamadas telefónicas

Si tu app se configura para autoadministrar llamadas telefónicas, no necesitas el permiso POST_NOTIFICATIONS a fin de que la app envíe notificaciones que usan el estilo de notificación Notification.CallStyle.

El sistema considera que tu app se configuró para autoadministrar llamadas telefónicas si realiza cada una de las siguientes acciones:

  1. Declara el permiso MANAGE_OWN_CALLS.
  2. Implementa la interfaz ConnectionService.
  3. Se registra con el proveedor de telecomunicaciones del dispositivo mediante una llamada a registerPhoneAccount().

Prácticas recomendadas

En esta sección, se describen varias formas en las que puedes usar el nuevo permiso de notificación de manera más efectiva en la app.

Actualiza la versión de destino del SDK de tu app

A fin de que tu app tenga más flexibilidad respecto de cuándo aparece diálogo del permiso, actualízala para que se oriente a Android 13.

Espera para mostrar el mensaje de permiso de notificación

Antes de pedirles a los usuarios que otorguen permisos, permíteles que se familiaricen con la app.

Es posible que los usuarios nuevos deseen explorar la app y descubrir de primera mano los beneficios de cada solicitud de notificación individual. Puedes activar una solicitud de permisos desde una acción del usuario. En la siguiente lista, se muestran varios ejemplos de cuándo es un buen momento para mostrar el mensaje de permiso de notificación:

  • El usuario presiona un botón de "campana de alertas".
  • El usuario elige seguir la cuenta de redes sociales de otra persona.
  • El usuario envía un pedido de envío de comida.

En la Figura 1, se muestra un flujo de trabajo recomendado para solicitar el permiso de notificaciones. A menos que shouldShowRequestPermissionRationale() muestre true, tu app no necesita mostrar la pantalla del medio, que es la que tiene el texto del título "¡Recibe notificaciones!".

Como alternativa, puedes configurar una solicitud para que aparezca después de que le brindes a los usuarios la oportunidad de familiarizarse con tu app. Por ejemplo, puedes esperar hasta la tercera o cuarta vez que el usuario inicie la app.

Después de que el usuario accede, aparece una invitación para recibir notificaciones sobre actualizaciones del viaje. Una vez que el usuario presiona el botón &quot;Acepto&quot;, la app solicita el permiso nuevo, lo que hace que aparezca el diálogo del sistema
Figura 1. Flujo de trabajo recomendado impulsado por el usuario para solicitar el permiso de notificaciones. La pantalla del medio solo es necesaria si shouldShowRequestPermissionRationale() muestra true.

Solicita el permiso en contexto

Cuando solicites permisos de notificación dentro de tu app, hazlo en el contexto correcto a fin de que quede claro el fin de las notificaciones y los motivos por los que el usuario debería aceptarlas. Por ejemplo, una app de correo electrónico podría incluir opciones para enviar notificaciones sobre cada correo electrónico nuevo o solo para los correos electrónicos en los que el usuario es el único destinatario.

Aprovecha esta oportunidad para brindar transparencia a tus intenciones y será más probable que los usuarios otorguen el permiso de notificación a tu app.

Verifica si tu app puede enviar notificaciones

Antes de que tu app envíe una notificación, confirma si el usuario habilitó las notificaciones de la app. Para hacerlo, llama a areNotificationsEnabled().

Usa el permiso con responsabilidad

Después de recibir la aprobación para enviar notificaciones, recuerda usar el permiso de manera responsable. Los usuarios pueden ver la cantidad de notificaciones diarias que envía tu app y revocar el permiso en cualquier momento.