Notificaciones
AppMint Push - Notifica a tus usuarios
Envía notificaciones a todos los que instalaron tu app, directamente desde AppMint y en tu propio proyecto de Firebase: programa, edita después de enviar, cancela, enlaces profundos
1Cómo funciona#
AppMint Push envía notificaciones a todos los que instalaron tu app, desde dentro de AppMint: enviar ahora, programar, editar después de enviar, cancelar, enlaces profundos.
Cada mensaje se puede diseñar: 8 plantillas, tu propio color, hasta 3 botones que abren cada uno su propia página, opciones de sonido y ventana emergente, y un banner, tarjeta, hoja o pantalla completa nativos dentro de la app mientras está abierta. Una vista previa en vivo lo muestra exactamente como lo verán los teléfonos de los usuarios.
Funciona en TU PROPIO proyecto de Firebase: tus usuarios, tu proyecto, sin límites compartidos, y nada tuyo alojado por AppMint. Firebase Cloud Messaging es gratis y sin límite de mensajes.
Necesitas dos archivos de ese proyecto: google-services.json (para la compilación) y una clave de cuenta de servicio (para enviar). Los siguientes pasos consiguen ambos. Funciona con todos los modos de compilación: sitio web, ZIP, HTML e IA.
AppMint Push y OneSignal son alternativas: activar uno desactiva el otro.
2Crea un proyecto de Firebase#
Ve a Firebase Console y haz clic en 'Añadir proyecto' (o abre un proyecto que ya tengas). Un proyecto gratuito de Firebase es suficiente: no se necesita facturación para las notificaciones.
Un proyecto puede contener varias de tus apps.
3Añade tu app y descarga google-services.json#
En tu proyecto de Firebase:
- Haz clic en 'Añadir app' y elige Android
- Introduce el nombre del paquete EXACTAMENTE como está definido en el asistente de AppMint (p. ej. com.yourname.yourapp): si no coincide, las notificaciones nunca llegan, y AppMint rechaza la compilación por ello
- Haz clic en 'Registrar app' y descarga google-services.json
- Puedes omitir los pasos restantes del SDK: AppMint se encarga de ellos
4Actívalo y sube el archivo#
En la tarjeta Notificaciones push del asistente de compilación:
- Activa 'AppMint Push'
- Toca 'Subir google-services.json' y elige el archivo del paso anterior
El asistente comprueba que el archivo contenga el nombre de tu paquete. Luego compila tu APK como siempre: durante la compilación tu app se registra para push en tu proyecto.
Los usuarios solo instalan la app y la abren una vez. En Android 13+ se les pide permitir notificaciones después de que cargue la primera pantalla.
Las plantillas, los botones y los estilos dentro de la app requieren una app compilada con esta versión de AppMint o posterior. Una compilación anterior sigue recibiendo todos los mensajes: los muestra con el estilo simple de siempre.
5Sube tu clave de cuenta de servicio (una sola vez)#
AppMint envía a través de tu proyecto, así que necesita una clave de él: el mismo archivo que pide OneSignal.
En Firebase Console:
- ⚙ Ajustes del proyecto → pestaña 'Cuentas de servicio'
- Haz clic en 'Generar nueva clave privada' y confirma: se descarga un archivo JSON
En AppMint: Inicio > Notificaciones → elige tu app → 'Subir clave' → elige ese JSON.
AppMint verifica la clave con un envío de prueba a tu proyecto antes de guardarla (cifrada), así que una marca verde significa que el siguiente envío saldrá de verdad. Una subida por app; recompilar la app no la necesita de nuevo a menos que cambies de proyecto de Firebase.
⚠️ Sube aquí la clave de CUENTA DE SERVICIO, no google-services.json: la pantalla te avisa si las confundes. Para revocar el acceso más adelante, elimina la clave en Firebase Console.
6Envía tu primera notificación#
En Inicio > Notificaciones:
- Elige tu app
- Escribe un título (el mensaje, la imagen y el enlace son opcionales)
- Revisa la tarjeta de Vista previa en vivo
- Toca 'Enviar notificación'
Todos los teléfonos con tu app instalada lo reciben.
Para la imagen, toca el cuadro Imagen: 'Elegir del dispositivo' (hasta 2 MB, PNG, JPEG o WebP) o 'Pegar un enlace de imagen' (https://). Una imagen elegida solo se sube cuando pulsas Enviar: antes puedes elegirla, reemplazarla o quitarla las veces que quieras.
7Elige una plantilla#
Diseño → Plantilla define la disposición de la notificación. El texto siempre va primero: una imagen nunca tapa el mensaje:
- Automático: tarjeta con imagen cuando el mensaje tiene una imagen; si no, Estándar
- Estándar: título y el mensaje completo; una imagen se convierte en una miniatura a un lado
- Tarjeta con imagen: la imagen DEBAJO del título y el mensaje legibles
- Banner: una tarjeta rellena con tu color, con una insignia opcional
- Promoción: una insignia como '50% OFF' y un botón de color (tu primer botón)
- Lista: hasta 6 líneas cortas, p. ej. varias actualizaciones de pedidos
- Cuenta atrás: un temporizador en vivo que cuenta hacia atrás hasta la fecha y hora que elijas y luego sale de la bandeja por sí solo
- Progreso: una barra de progreso; edita y reenvía con un valor nuevo y la barra avanza en cada teléfono sin volver a vibrar
- Mínimo: título y una línea, sin sonido, sin ventana emergente
Los tamaños de texto e imagen se adaptan al tamaño de fuente de cada usuario, así que nada se corta en teléfonos con texto grande.
8Elige un color#
Diseño → Color tiñe el icono, el banner, los botones y la cuenta atrás de la notificación. Elige uno de los 9 colores listos, o '+' para cualquier #RRGGBB.
Todos los colores listos se leen bien tanto en teléfonos claros como oscuros. Un color personalizado se comprueba con ambos: si es demasiado pálido o demasiado oscuro, la nota bajo los colores lo indica, y 'Corregir contraste' en el cuadro de color personalizado lo ajusta al tono más cercano que funciona manteniendo su matiz. El texto en un botón o banner de color se pone automáticamente en negro o blanco.
Usa los mosaicos 'Teléfono claro' / 'Teléfono oscuro' en la Vista previa en vivo para ver ambos.
9Añade botones#
Diseño → Botones: '+ Añadir botón' (hasta 3). Cada uno tiene una etiqueta (hasta 24 caracteres) y su propio enlace, p. ej. 'Seguir pedido' → #/orders/1042 y 'Ayuda' → #/support. Deja vacío el enlace de un botón para abrir el enlace principal.
Los botones se muestran bajo la notificación en la bandeja y en la presentación dentro de la app. En la plantilla Promoción, el primer botón se convierte en el botón grande de color de la tarjeta.
10Mientras la app está abierta#
Diseño → 'Mientras la app está abierta' decide lo que ve el usuario cuando el mensaje llega mientras usa tu app:
- Diseño propio de la app (predeterminado): el código de tu app lo muestra (consulta Bandeja de entrada dentro de la app más abajo)
- Banner superior: baja desde la parte superior y se oculta solo tras unos segundos
- Tarjeta central: una tarjeta sobre la app atenuada con la imagen, el texto y los botones
- Hoja inferior: la misma tarjeta que sube desde la parte inferior
- Pantalla completa: una imagen grande con los botones en la parte inferior
La presentación sigue el tema claro u oscuro del teléfono, y Atrás o tocar fuera la cierra. Cuando se muestra, el mismo mensaje no se pone también en la bandeja: el usuario ya lo está viendo.
Con 'Solo dentro de la app' (Envío → Mostrar como), un mensaje que llega con la app cerrada se muestra la próxima vez que el usuario la abra.
11Sonido, ventana emergente y momento#
Diseño → Comportamiento:
- Sonido: desactivado para una notificación silenciosa
- Mostrar como ventana emergente: desactívalo para evitar el aviso sobre lo que el usuario esté haciendo (igualmente llega a la bandeja)
- Descarte automático: quita la notificación de la bandeja tras 30 segundos hasta 3 días (Android 8 y posterior)
Opciones avanzadas:
- Imagen de icono / avatar: una imagen redonda junto al texto (enlace https://)
- Clave de agrupación: los mensajes que la comparten se agrupan bajo un solo encabezado
- Clave de reemplazo: un mensaje más nuevo con la misma clave REEMPLAZA al anterior en el teléfono y en la bandeja de entrada, p. ej. un marcador en vivo
Los usuarios también pueden ajustar el sonido por tipo en los ajustes de notificaciones de Android para tu app.
Tu propio sonido: en el asistente, Integrar → Notificaciones push → Sonido de notificación (MP3, OGG, WAV, M4A, AAC, FLAC u Opus, hasta 1 MB y 30 segundos). Suena en cada mensaje enviado con Sonido activado. Las apps instaladas lo reciben con la actualización que lo incluye; cada usuario aún puede cambiarlo en los ajustes de notificaciones de Android.
12Prueba, guarda y reutiliza#
- Vista previa en vivo: mosaicos Contraído, Expandido y Dentro de la app, en un teléfono claro u oscuro, dibujados por el mismo código que ejecutan los teléfonos de tus usuarios
- 'Probar en este teléfono': muestra el mensaje solo en TU teléfono, como una notificación real o como la presentación dentro de la app sobre la pantalla de Notificaciones. No se envía nada a los usuarios
- Plantillas guardadas (icono de libro arriba): 'Guardar el mensaje actual como plantilla' conserva el texto, el enlace, la imagen y cada opción de diseño en este teléfono; 'Usar' lo carga de nuevo con un toque
- En el Historial, 'Duplicar como mensaje nuevo' inicia un mensaje nuevo a partir de cualquier anterior
13Programar para más tarde#
En la tarjeta Envío, toca 'Programar' bajo Cuándo y elige una fecha y hora. La notificación sale automáticamente en ese momento.
Hasta que se envíe, puedes editarla o cancelarla desde la lista del Historial de abajo.
14Corrige un error después de enviar#
Toca cualquier notificación en el Historial:
- 'Editar y reenviar': lo carga de nuevo en el editor con todo su diseño; 'Actualizar y reenviar' lo reemplaza EN SU LUGAR en cada dispositivo
- 'Cancelar': lo quita de todos los teléfonos donde aún no se haya abierto, incluida una presentación dentro de la app que siga en pantalla
- 'Eliminar': igual que cancelar, y además lo borra de tu historial
⚠️ Una notificación que el usuario ya abrió o descartó no se puede retirar.
15Abre una página específica#
El campo opcional Enlace controla lo que abre un toque (cada botón puede tener el suyo):
- Una dirección https:// completa (ideal para apps de sitios web)
- Una ruta dentro de la app como #/offers
El código de tu app también puede leerlo en cualquier momento:
const link = window.WebToApk?.getLaunchUrl?.();
window.addEventListener('appmint:deep-link',
e => goTo(e.detail.url));16Bandeja de entrada dentro de la app (opcional)#
Cada push también se guarda dentro de la app instalada (los últimos 50), para que tu app pueda mostrar su propia pantalla de notificaciones con indicadores de no leídas. Esto funciona en TODOS los modos de compilación, incluidas las apps de sitio web (URL), donde solo añades estas pocas líneas a tu propio sitio.
Cuando el shell ya mostró un mensaje en pantalla (un estilo bajo 'Mientras la app está abierta'), el evento indica presented: true: entonces no dibujes un segundo banner. Una app que dibuja todos sus banners puede desactivar los del shell con setPushPresentation('none').
Descartar es un DESLIZAMIENTO, no una pequeña ✕, y es reversible: combínalo con un breve Deshacer:
const B = window.WebToApk;
const inbox = JSON.parse(B?.getPushInbox?.() ?? "[]");
// [{id,title,body,imageUrl,link,receivedAt,read,
// template?,accent?,buttons?,badge?,inapp?...}]
const unread = inbox.filter(m => !m.read).length;
// live arrival while the app is open
window.addEventListener('appmint:push', e => {
const d = e.detail;
if (d.type === 'received' && !d.presented) showBanner(d.message);
refreshInbox(); // fires for 'revoked' too
});
B?.markPushRead?.(id); // "" = mark all read
B?.dismissPushMessage?.(id); // swipe away
B?.restorePushMessage?.(id); // ...Undo
B?.setPushPresentation?.('none'); // app draws its own17Si no llega nada a tu teléfono de prueba#
Casi siempre es un límite del TELÉFONO DE PRUEBA, no de tu app ni de tus usuarios.
Android permite aproximadamente 100 registros push por teléfono. Cada instalación NUEVA de una app que usa notificaciones ocupa uno; así que instalar compilación tras compilación mientras pruebas puede agotarlos, y ese teléfono deja de recibir para las apps recién instaladas.
Libera espacios (esto es lo que realmente funciona):
- Desinstala las apps de prueba que ya no necesites: Android libera el espacio que cada una ocupaba
- O borra los datos de una app de prueba: Ajustes > Apps > [esa app] > Almacenamiento > Borrar datos; eso libera su espacio sin desinstalar
- En un emulador, borrarlo restablece todos los espacios de golpe
Reiniciar el teléfono NO ayuda: estos registros se guardan de forma permanente, por eso sobreviven a un reinicio. Borrar la caché de Google Play Services tampoco los libera.
Evítalo mientras haces pruebas:
- Mantén UN solo nombre de paquete mientras iteras: cada nombre de paquete distinto ocupa su propio espacio
- Instala el nuevo APK ENCIMA del anterior en lugar de desinstalar primero: una actualización conserva el registro existente, una reinstalación gasta uno nuevo
- Prueba en un teléfono de repuesto o en un emulador; borrar un emulador restablece sus espacios al instante
- Elimina las apps de prueba que ya terminaste de usar
Revisa también lo básico: la app se abrió al menos una vez tras instalarse, y las notificaciones están permitidas para ella en los ajustes de Android. La app se vuelve a suscribir en cada inicio, así que se recupera sola cuando se liberan espacios; no hace falta recompilar.
18Límites y buenas prácticas#
- Sin límite en la cantidad de notificaciones que envías: Firebase Cloud Messaging es gratis
- Título de hasta 120 caracteres, mensaje de hasta 1000; los enlaces de imagen e icono deben ser https://
- Hasta 3 botones (etiquetas de 24 caracteres) y hasta 6 líneas de lista
- En el plan gratuito se reproduce un anuncio corto antes de cada envío
- Apps de prueba: elimínalas con el icono de papelera junto al selector de app; esto borra el historial y la clave guardada solo en AppMint; tu proyecto de Firebase no se toca, y una nueva compilación vuelve a añadir la app
- Volver a compilar con un google-services.json NUEVO del MISMO proyecto no cambia nada: tu clave sigue igual, las instalaciones existentes siguen recibiendo
- ⚠️ Mover la app a un proyecto de Firebase DISTINTO es una ruptura total. Vuelve a compilar con el nuevo google-services.json, sube la clave del nuevo proyecto (AppMint descarta la anterior, ya que nunca podría enviar para el nuevo proyecto), y ten en cuenta que los teléfonos que aún usan la versión ANTIGUA dejan de recibir hasta que sus usuarios actualicen. Las notificaciones llegan a un proyecto, y esas instalaciones siguen escuchando al anterior
- Envía con moderación: los usuarios desinstalan las apps que los saturan
19Elige quién lo recibe#
En 'Quién lo recibe', un mensaje va a Todos (lo predeterminado) o a los teléfonos que elijas:
- Países, idiomas, versiones de Android y versiones de la app
- Actividad: abrió la app en los últimos N días, o no la ha abierto durante N días
- Solo teléfonos con las notificaciones activadas
- ID de usuario y etiquetas que define la página de tu app (siguiente paso)
Antes de enviar, la pantalla muestra a cuántos teléfonos llega tu elección.
Más formas de enviar:
- La hora local de cada teléfono (bajo Cuándo): p. ej. las 09:00 en el reloj de cada teléfono, zona horaria por zona horaria
- Prueba A/B: escribe una versión B; cada versión va a una parte de prueba de la audiencia y, tras la espera que fijes, la que tenga más aperturas (o toques) se envía a todos los demás
- Límite diario por teléfono: el máximo de mensajes que un teléfono recibe de esta app en un día; los mensajes que lo superan se omiten para ese teléfono y aparecen como 'omitido (límite diario)'
El Historial muestra, para cada mensaje, a cuántos teléfonos llegó, cuántos fallaron y cuántos se omitieron.
⚠️ Elegir destinatarios, la hora local, las pruebas A/B, las automatizaciones y el límite diario solo llegan a teléfonos con una app compilada a partir del 30 sep 2026 (se registran solos). Los teléfonos con compilaciones anteriores siguen recibiendo los envíos a 'Todos': vuelve a compilar y publica una actualización para llegar a ellos también de esta manera.
20Dirígete a usuarios con sesión iniciada y etiquetas#
La página de tu app le dice a AppMint Push quién ha iniciado sesión y qué debe saber sobre esta instalación. Luego puedes enviar a un usuario, o a todos los que tengan una etiqueta como plan = pro.
- setPushUser: después de iniciar sesión, con TU PROPIO ID de cuenta (el ID de la base de datos, nunca un correo ni un teléfono). Letras, dígitos y _ @ . : + - (hasta 128). Llámalo con "" al cerrar sesión, o el teléfono seguirá recibiendo los mensajes de ese usuario
- setPushTag / setPushTags: un nombre de etiqueta (letras, dígitos y _, hasta 32) y un valor (hasta 128). "" elimina una etiqueta; hasta 50 por instalación
- getPushUser / getPushTags: lee lo que tiene este teléfono
Los ID y las etiquetas pertenecen a la instalación, no a la cuenta: borra también las etiquetas específicas del usuario al cerrar sesión. El teléfono informa del cambio unos segundos después (en el siguiente inicio si está sin conexión). El mismo usuario con sesión iniciada en dos teléfonos recibe en ambos.
const B = window.WebToApk;
// after sign-in: your own account id
B?.setPushUser?.(user.id);
B?.setPushTag?.('plan', user.isPro ? 'pro' : 'free');
B?.setPushTags?.(JSON.stringify({ city: 'pune', level: '12' }));
// on sign-out
B?.setPushUser?.('');
B?.setPushTag?.('plan', '');
// read back
const who = B?.getPushUser?.() ?? '';
const tags = JSON.parse(B?.getPushTags?.() ?? '{}');21Automatizaciones#
Mensajes que salen solos. En Automatizaciones, toca '+ Nuevo' y elige uno:
- Bienvenida: N minutos después de una instalación nueva (de 0 minutos a 30 días). Cada teléfono la recibe una vez
- Recuperación: cuando alguien no ha abierto la app durante N días (de 1 a 180). Una vez por ausencia: un teléfono que vuelve y se aleja de nuevo lo recibe otra vez
- Etiqueta: N minutos después de que la página de tu app defina una etiqueta, opcionalmente solo para un valor. Se envía solo si la etiqueta sigue definida cuando se cumple el tiempo
Carrito abandonado: define una etiqueta cuando se añadan artículos al carrito y quítala al finalizar la compra. Una automatización 'cart' con un retraso de 60 minutos recuerda entonces solo a quienes se fueron sin comprar. Volver a definir el mismo valor no reinicia el contador; después de quitar la etiqueta, volver a definirla puede enviar otra vez.
Las automatizaciones cuentan para el límite diario por teléfono, y llegan a teléfonos con compilaciones hechas a partir del 30 sep 2026.
const B = window.WebToApk;
// items added to the cart
B?.setPushTag?.('cart', 'open');
// checkout finished, or the cart emptied: no reminder
B?.setPushTag?.('cart', '');22Llega a los usuarios con las notificaciones desactivadas#
Un teléfono con las notificaciones desactivadas nunca muestra una notificación en la bandeja, pero tu mensaje igualmente llega a la app, y un mensaje dentro de la app aparece la próxima vez que el usuario la abra. Úsalo para pedirles que vuelvan a activar las notificaciones:
- Quién lo recibe → Elegir quién → activa 'Notificaciones desactivadas'
- Mostrar como → Solo dentro de la app (un Banner superior o una Tarjeta central en Diseño)
- Diseño → Botones → '+ Botón “Activar notificaciones”'. Su enlace es appmint://notifications/enable: un toque muestra la solicitud de permiso, o abre los ajustes de notificaciones de la app cuando ya no se puede mostrar la solicitud
Cuando la app tiene teléfonos con las notificaciones desactivadas, el centro de envío muestra 'Llegar a los N teléfonos con notificaciones desactivadas' bajo la clave de Firebase: un toque define los tres. En cuanto un usuario activa las notificaciones, su teléfono sale de esa audiencia.
El botón requiere una app compilada con esta versión de AppMint o posterior; las compilaciones anteriores tratan el enlace como un enlace normal. appmint://notifications/settings abre directamente la pantalla de ajustes.
// Your page can offer the same thing itself:
const r = await window.AppMint?.enableNotifications?.();
// r = { state: 'granted' | 'prompt' | 'blocked' | 'unavailable',
// changed, openedSettings }
// and hear a push button's result too:
window.addEventListener('appmint:notifications', e => {
if (e.detail.state === 'granted') hideNotifBanner();
});23Mensajes dentro de la app#
Los mensajes dentro de la app son campañas que creas en el centro de envío: Notificaciones push → 'Mensajes dentro de la app' → '+ Nuevo'. La app los descarga y los muestra ella misma, sin push, cuando ocurre el disparador que elegiste:
- La app se abre: la N-ésima apertura de la app
- Una página o ruta (/checkout, #/cart, /product/*)
- Tiempo en la app: N segundos en la app
- Un evento que registra tu página (siguiente paso)
- Una etiqueta push
- Notificaciones desactivadas: combínalo con un botón 'Activar notificaciones'
- Actualización de la app: la primera apertura después de una actualización
Muéstralo como banner, modal, hoja o pantalla completa. Cada mensaje tiene una frecuencia (una vez por instalación por defecto), una audiencia opcional y una hora de inicio y fin opcionales. Requiere AppMint Push en la compilación.
24Cuéntale a la app qué pasó#
La parte de tu página es pequeña: informa de los momentos que importan con trackEvent. Un mensaje cuyo disparador es 'Cuando ocurre un evento' con el mismo nombre se muestra ahora (o después de la espera que elegiste). Nombres: letras, dígitos y _ . : - (hasta 64). Los eventos no se cuentan ni se guardan en ningún sitio; solo deciden si se muestra un mensaje.
Los mensajes por ruta siguen los cambios reales de URL (cargas de página, pushState, rutas #hash) por sí solos. Una vista que la dirección no muestra (una pestaña, un paso de un asistente) se puede informar como ruta con el evento appmint:route.
if (window.AppMint && AppMint.trackEvent) AppMint.trackEvent('checkout_done', { total: 42 });
// raw bridge: props as a JSON string ('' for none)
WebToApk.trackEvent('level:3', '');
// a view the address does not show, reported as a route
window.dispatchEvent(new CustomEvent('appmint:route', { detail: { path: '/cart' } }));25Dibuja los mensajes tú mismo (opcional)#
Cada mensaje lanza appmint:inapp con { type: 'shown' | 'clicked' | 'dismissed', id, name } (y llama a window.onAppMintInApp(detail) si la defines).
Para dibujar los mensajes tú mismo, llama a WebToApk.setInAppPresentation('none'): la app entonces no dibuja nada y el evento 'shown' trae presented: false y el mensaje (título, cuerpo, imagen, botones). setInAppPresentation('auto') devuelve el dibujo a la app. WebToApk.getInAppCampaigns() lista lo que tiene esta instalación ([{id, name}]).
Todo esto requiere AppMint Push en la compilación; en cualquier otra compilación los métodos responden false / "[]".
window.addEventListener('appmint:inapp', e => {
// e.detail = { type: 'shown' | 'clicked' | 'dismissed', id, name, presented?, message? }
if (e.detail.type === 'shown' && e.detail.presented === false) drawMyBanner(e.detail.message);
});
WebToApk.setInAppPresentation('none'); // 'auto' gives drawing back to the app
const held = JSON.parse(WebToApk.getInAppCampaigns() || '[]'); // [{id, name}]26Empieza desde una plantilla#
'+ Nuevo' abre una galería de mensajes ya hechos, cada uno con vista previa en vivo que puedes buscar o filtrar por diseño: Bienvenida, Califícanos, Activar notificaciones, Novedades, Oferta flash (con cuenta atrás en vivo), Promoción de temporada, Nueva función, Actualización disponible, Carrito abandonado, Recuperación, Encuesta de estrellas, Puntuación NPS, Invitar amigos, Oferta de suscripción, Racha, Consejo, Explicación de permisos, Mantenimiento (permanece hasta que se cierre), Actualización de términos (sin botón de cierre) y Síguenos. Una plantilla rellena el diseño, el emoji o la imagen, el texto, los botones, el disparador y la frecuencia: cambia lo que quieras antes de guardar. 'Mensaje en blanco' empieza vacío.
Encuesta de estrellas, Califícanos y NPS hacen una pregunta: una fila de 1-5 estrellas o una puntuación de 0-10. El primer botón espera una respuesta; la respuesta se informa una vez, cuando el mensaje se cierra, como un evento appmint:inapp 'answered' { value, question }, y el centro de envío muestra el promedio de estrellas o la puntuación NPS con la dispersión.
Los enlaces de los botones también pueden ser appmint://review (la hoja de reseñas de Google Play), share:text (la hoja de compartir), copy:text (el portapapeles), route:/page y event:name. El texto puede usar {app}, {store}, {name}, {streak} y {tag:key}, que se rellenan en cada teléfono; {name|friend} da una palabra para cuando no hay valor. Un mensaje cuyo marcador no tenga valor no se muestra. Requiere una app compilada con esta versión o posterior.
window.addEventListener('appmint:inapp', e => {
const d = e.detail;
if (d.type === 'answered') {
// d.question: 'stars' (1-5) or 'nps' (0-10); d.template e.g. 'survey_stars'
if (d.question === 'nps' && d.value <= 6) openFeedbackForm();
}
if (d.type === 'clicked' && d.link === 'event:allow') askForLocation();
});
// {streak} and {tag:key} come from push tags
WebToApk.setPushTag('streak', '7');