Bloquear, detectar y guardar capturas de pantalla en tu app de Lovable
Lecciones de pago, chats privados, saldos de cuenta, cupones de un solo uso: algunas pantallas no deberían acabar en un chat de grupo. WebViewGold puede bloquear capturas y grabaciones de pantalla en Android y detectarlas en iOS, y luego llamar a una función JavaScript de tu app de Lovable para que puedas reaccionar. Las mismas herramientas también funcionan al revés: takescreenshot:// guarda una pantalla en Fotos a propósito, para entradas y recibos.
Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.
Garantía de aprobación – o te devolvemos el dinero en 14 días
Sin programar
Pago único, actualizaciones gratuitas
Soporte humano 24/7
Hecho en Alemania desde 2014 · ISO 27001
9:41
LLovable
Protección de capturas de pantallaYa en tu bolsillo
App Store · Google Play Aprobada
Lo que ofrece realmente cada plataforma
Función
iOS
Android
Impedir capturas y grabaciones de pantalla
No es posible: iOS no tiene ninguna API oficial que bloquee una captura de pantalla
PREVENT_SCREEN_CAPTURE = true en Config.java impide las capturas y grabaciones de pantalla de la app
Avisar a la web app
let preventScreenCapture = true en Config.swift detecta capturas y grabaciones de pantalla y llama a onScreenCaptureAttempt() (pese al nombre, la documentación describe una detección)
Se llama a onScreenCaptureAttempt() para que puedas mostrar tu propio mensaje
Guardar la pantalla actual en Fotos a propósito
takescreenshot://
takescreenshot://
Alcance
Un interruptor para toda la app; no hay documentado ningún ajuste por página
Un interruptor para toda la app; no hay documentado ningún ajuste por página
Prompt para Lovable
Pega esto en Lovable para implementar la parte de la web app. Revisa el resultado, publica y luego prueba dentro de la app WebViewGold.
Prompt para pegar en Lovable
Añade gestión de capturas de pantalla para el envoltorio de app WebViewGold. 1) En src/main.tsx define window.onScreenCaptureAttempt como una función global que lance un CustomEvent "screen-capture" en window. 2) Crea un componente ScreenCaptureNotice, montado una sola vez en el layout, que escuche ese evento y muestre un toast: "Las capturas de las lecciones de pago están desactivadas para proteger a nuestros creadores." 3) Inserta una fila en una nueva tabla de Supabase capture_events (user_id, path, created_at) con RLS que permita a cada usuario insertar solo sus propias filas. 4) En la página de la entrada, añade un botón Guardar en Fotos que navegue a takescreenshot:// solo cuando navigator.userAgent contenga mi token personalizado de WebViewGold; en navegadores, muestra en su lugar un botón Imprimir. 5) No bloquees nunca al usuario ni cierres su sesión por una captura.
¡Gran trabajo! Nunca tuve que usar código para nada, pero logré trabajar con esto y tener mi App lista. ¡Fácil y rápido! ¡También con gran ayuda de los creadores!
Unos 20 minutos más una nueva compilación de ambas apps.
Activa el ajuste
iOS: let preventScreenCapture = true en Config.swift. Android: PREVENT_SCREEN_CAPTURE = true en Config.java. Es un cambio nativo, así que llega con la próxima compilación de la app, no con un despliegue web.
Haz global onScreenCaptureAttempt
WebViewGold llama a una función con exactamente este nombre. El código empaquetado por Vite, Next.js o herramientas similares vive en módulos, así que una función declarada dentro de un componente no es global. Asígnala explícitamente en código que se ejecute en todas las páginas: window.onScreenCaptureAttempt = function () { … }.
Muestra un mensaje tranquilo
Explica el motivo ("Las diapositivas de la lección están protegidas por respeto a su autor") en lugar de cerrar la sesión del usuario. En iOS la captura ya está hecha cuando se ejecuta la función, así que el mensaje disuade, no bloquea.
Regístralo solo si lo necesitas
Las apps de exámenes, documentos y finanzas pueden querer un registro de auditoría (usuario, página, hora). Si lo registras, indícalo en tu política de privacidad.
Ofrece una forma prevista de guardar
Donde guardar es legítimo (entradas, recibos, certificados), añade un botón Guardar en Fotos que navegue a takescreenshot://. Si lo combinas con el bloqueo de capturas en Android, comprueba en un dispositivo que la imagen guardada no salga en blanco.
La parte de JavaScript
Carga esto una vez en cada página (por ejemplo, en el archivo de entrada de la app). El endpoint opcional de registro pertenece a la parte de servidor de tu stack: Supabase o Lovable Cloud (Postgres, almacenamiento, edge functions).
javascript
// User agent personalizado con "WebViewGold", definido en Config.swift / Config.java
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1;
// WebViewGold la llama cuando detecta una captura o grabación de pantalla (iOS)
// o un intento de captura con PREVENT_SCREEN_CAPTURE activado (Android)
window.onScreenCaptureAttempt = function () {
showToast("Las capturas de pantalla están desactivadas en las lecciones de pago."); // tu propio helper de UI
fetch("/api/capture-events", {
method: "POST", keepalive: true,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ path: location.pathname, at: Date.now() })
});
};
// Guardado previsto, por ejemplo en una página de entradas
function saveTicketToPhotos() {
if (IN_APP) { window.location.href = "takescreenshot://"; }
else { window.print(); } // alternativa en el navegador
}
Límites que conviene reconocer
Ninguna protección es absoluta: cualquiera puede fotografiar la pantalla con un segundo teléfono. Úsala para disuadir de compartir a la ligera, no como única protección de datos confidenciales.
Capturas para la tienda: con el bloqueo activado, Android también bloquea tus propias capturas. Haz las imágenes para la ficha de Play antes de activarlo, o desde una compilación sin él. Consulta capturas y ficha de la tienda.
Los usuarios esperan poder hacer capturas de entradas, recibos y confirmaciones. Bloquear toda la app por una sola página sensible los frustra, y eso se nota en las reseñas de la tienda.
En iOS, diseña la experiencia en torno a la detección: un aviso, una entrada de registro opcional o una marca de agua visible con el correo del usuario en las páginas sensibles.
takescreenshot:// guarda en la fototeca. iOS pide permiso al usuario la primera vez, así que la descripción de uso de Fotos en el proyecto de Xcode debe explicar el motivo ("para guardar tu entrada y usarla sin conexión").
Preguntas frecuentes
¿Puedo bloquear las capturas de pantalla en iPhone?
No del todo. iOS no tiene ninguna API oficial que impida una captura de pantalla. WebViewGold detecta capturas y grabaciones de pantalla (preventScreenCapture en Config.swift) y llama a onScreenCaptureAttempt en la web app para que puedas responder. El bloqueo real está disponible en Android con PREVENT_SCREEN_CAPTURE en Config.java.
¿La protección de capturas causa problemas en la revisión de App Store o Google Play?
No por sí misma. Ninguna de las dos tiendas exige que las apps permitan capturas, y la detección no necesita ningún permiso. Si las pantallas protegidas se ven en negro en una grabación de pantalla de Android, menciónalo en las notas de revisión para que nadie lo confunda con un error.
¿Puedo proteger solo algunas páginas?
La documentación de WebViewGold describe interruptores para toda la app, no un ajuste por página. Lo que controlas por página es la reacción: onScreenCaptureAttempt puede comprobar la ruta actual y mostrar un aviso solo en las páginas sensibles.
¿Cómo guardan los usuarios una entrada desde mi app de Lovable?
Añade un botón Guardar en Fotos que navegue a takescreenshot:// dentro de la app. WebViewGold guarda el contenido actual del WebView en la galería de Fotos, así que la entrada está disponible en el recinto incluso sin conexión.
¿Funciona onScreenCaptureAttempt con código de React, Vue o Svelte?
Sí, siempre que la función esté asignada al objeto window. Una función declarada dentro de un componente o de un módulo ES no es global, así que WebViewGold no la encuentra; asigna window.onScreenCaptureAttempt en el archivo de entrada de tu proyecto de Lovable.
Tres formas de llevar tu app a las tiendas
El mismo resultado, con distinta cantidad de trabajo por tu parte. Las tres incluyen la garantía de aprobación y soporte humano 24/7.
Hazlo tú mismo
$109 por plataforma, pago único
La licencia de WebViewGold: un proyecto de Xcode o Android Studio listo para usar. Pega tu URL, define nombre e icono, activa funciones, compila y envía. Actualizaciones gratuitas para siempre.
Sin Mac, sin Xcode, sin Android Studio: configura en el navegador, compilamos ambas apps en la nube y las entregamos a App Store Connect y a Play Console.
Envíanos tu URL y tu icono. Nuestro equipo configura, compila y entrega tu app en 72 horas, en marca blanca y con los proyectos fuente. Ambas plataformas por $1,158.
Los reembolsos se conceden bajo las condiciones indicadas en nuestras FAQ: un rechazo por motivos ajenos al contenido por parte de Apple y/o Google, reclamado dentro de los 14 días posteriores a la compra.