Saltar al contenido principal

¿Por qué usar un prompt de permiso push?

Para enviar notificaciones push que aparecen como banners, se muestran en la pantalla de bloqueo y reproducen sonidos, tu app primero debe solicitar permiso al usuario. En iOS, Android, Huawei, Amazon y Web, esto implica mostrar un prompt de permiso a nivel del sistema.
iOS and Android system-level push permission prompts side by side
Esta guía es para suscriptores de push de apps móviles. Para web push, consulta Prompts de permiso web. Requisitos previos: Una cuenta de OneSignal, una app móvil con el SDK de OneSignal instalado, y mensajes in-app habilitados.
iOS permite el prompt de permiso del sistema solo una vez. Android lo permite dos veces. Si el usuario rechaza, deberá habilitar las notificaciones manualmente en la configuración del sistema. Un prompt mal cronometrado puede costarte un suscriptor de forma permanente.
En iOS, también puedes usar notificaciones provisionales, que se entregan silenciosamente al Centro de notificaciones sin solicitar al usuario — ideal para pruebas o onboarding de baja fricción.
Dado que el prompt del sistema es limitado, tanto Apple como Google recomiendan encarecidamente explicar el valor de tus notificaciones antes de mostrarlo. Puedes activar el prompt en cualquier momento usando el método SDK requestPermission(), pero sin el contexto adecuado, es más probable que los usuarios rechacen — y en iOS, un prompt rechazado no puede mostrarse nuevamente. El enfoque recomendado es un “soft prompt” — un mensaje in-app personalizado que presenta la solicitud antes del prompt del sistema. Si el usuario acepta, aparece el prompt del sistema. Si rechaza, nada sucede y puedes preguntar de nuevo más tarde.
In-app message leading to system push permission prompt

Configurar un prompt de permiso push in-app

1

Eliminar cualquier prompt de permiso automático

Antes de comenzar, asegúrate de que tu app no esté ya activando el prompt push nativo automáticamente:
  • Elimina los métodos requestPermission() o optIn() si los estás llamando al iniciar la app.
  • Elimina las llamadas nativas de iOS a requestAuthorizationWithOptions y cualquier método que genere tokens push.
  • Elimina las llamadas de Android a requestPermissions y cualquier método que genere tokens push.
Además, asegúrate de que estés usando la última versión del SDK de OneSignal en tu app.
2

Crear o editar el mensaje in-app

Ve a Messages > In-App, luego:
  • Edita la plantilla predeterminada de Push Permission Prompt, o
  • Haz clic en New Message para crear el tuyo.
OneSignal in-app messages list showing the Push Permission Prompt template
Establece la audiencia como Show to all users. OneSignal filtra automáticamente este mensaje para mostrar solo a los usuarios que no se han suscrito a push, según la acción de clic Push Permission Prompt.
Audience setting configured to show to all users
3

Personalizar el diseño del mensaje

Personaliza la apariencia, sensación y redacción para que se ajuste a tu app. Informa a los usuarios qué tipo de notificaciones recibirán y por qué son valiosas.Consulta Diseñar mensajes in-app con arrastrar y soltar o Diseñar mensajes in-app con HTML para más detalles.
In-app message block editor with a push opt-in prompt
4

Agregar la acción de clic de prompt de permiso push

Agrega una acción de clic Push Permission Prompt a cualquier botón o imagen en tu mensaje. Cuando se toque, se muestra el prompt del sistema.
Click action dropdown with Push Permission Prompt selected
iOS native push notification permission prompt
Si un usuario ya ha denegado el permiso, el botón lo dirigirá a la configuración de notificaciones de tu app.
Los mensajes in-app con una acción Push Permission Prompt no se muestran a usuarios que ya han permitido notificaciones.
5

Elegir un activador

La audiencia controla quién es elegible para ver el mensaje. Los activadores controlan cuándo se muestra.
In-app message trigger configuration panel
Puedes activar el mensaje:
  • Al abrir la app
  • Después de una cantidad establecida de tiempo de sesión
  • En un evento de usuario específico
  • Programáticamente, usando los métodos SDK de mensaje in-app para control total sobre el tiempo y el contexto
Por ejemplo, para esperar hasta que el usuario haya pasado al menos 5 minutos en la app:
Session duration trigger set to 5 minutes
6

Programación y frecuencia

Controla con qué frecuencia aparece el mensaje:
  • Solo una vez — Baja probabilidad de convertir usuarios que no estaban listos la primera vez.
  • Cada vez que se cumplan las condiciones — Demasiado agresivo y puede molestar a los usuarios.
  • Múltiples veces (recomendado) — Establece un máximo alto (ej. 9999) con un intervalo entre vistas (ej. 2 semanas). Esto vuelve a solicitar a los usuarios no suscritos periódicamente sin ser intrusivo. Ajusta el intervalo según tu caso de uso.
Schedule configuration showing max displays and gap between views
Actualiza tu mensaje y ponlo en vivo. Monitorea tus estadísticas y ajusta el intervalo entre visualizaciones según sea necesario.

Mostrar programáticamente el prompt de permiso

Puedes activar el prompt de permiso push manualmente usando los métodos SDK requestPermission() o optIn(). Esto es útil para flujos personalizados como:

Rastrear permisos push y resultados de prompts

Cuando uses mensajes in-app para solicitar push, puedes rastrear acciones de clic con el listener de clic de mensaje in-app. Si el mensaje in-app se muestra pero el usuario no hace clic en el botón, usa los eventos del ciclo de vida del mensaje in-app para rastrear impresiones y cierres. Para rastrear el resultado del prompt de permiso a nivel del sistema en sí, usa el listener de permiso push.
Puedes enviar estos eventos SDK a tu backend o herramienta de analíticas de tu elección.

FAQ

¿Qué sucede si un usuario rechaza el prompt de permiso push?

En iOS, rechazar el prompt del sistema deshabilita permanentemente las notificaciones push de tu app — el prompt no puede mostrarse nuevamente. En Android, el usuario tiene una oportunidad más (dos en total). Después de usar todos los intentos, el usuario debe volver a habilitar las notificaciones manualmente en Configuración > Notificaciones en su dispositivo. El método requestPermission(fallbackToSettings: true) del SDK de OneSignal puede redirigir a los usuarios a su configuración de notificaciones si el permiso fue denegado anteriormente.

¿Puedo personalizar el prompt de permiso nativo del sistema?

No. Los diálogos de permiso nativos de iOS y Android son controlados por el sistema operativo y no pueden personalizarse. Solo puedes controlar el soft prompt (el mensaje in-app que se muestra antes del prompt del sistema). Usa el soft prompt para explicar el valor de tus notificaciones, establecer expectativas y aumentar la probabilidad de un “Permitir” en el prompt del sistema.

¿Puedo seguir solicitando a usuarios con notificaciones provisionales?

Sí. Si usas notificaciones push provisionales de iOS, aún puedes mostrar un soft prompt para convertir a esos usuarios en suscriptores push completos. Cronometra el prompt estratégicamente — después de que el usuario haya visto el valor de tus notificaciones provisionales.

¿Cómo vuelvo a solicitar a usuarios que anteriormente rechazaron push?

No puedes mostrar el prompt de permiso del sistema nuevamente una vez que el usuario ha rechazado en iOS (o dos veces en Android). En su lugar, usa el método SDK requestPermission(fallbackToSettings: true), que abre la página de configuración de notificaciones de la app para que el usuario pueda habilitar las notificaciones manualmente. Combínalo con un mensaje in-app que explique por qué las notificaciones son valiosas.

¿Cuándo comenzó Android a requerir prompts de permiso?

Android 13 (nivel de API 33) introdujo el permiso de notificación en tiempo de ejecución, que requiere el consentimiento explícito del usuario para las notificaciones push.

Notificaciones push provisionales de iOS

Envía notificaciones al Centro de notificaciones sin un prompt de permiso previo en iOS 12+.