Reproducción nativa de video y audio para tu app de Bolt
Una etiqueta de video HTML5 funciona dentro de la app, pero las lecciones largas se ven apretadas y la reproducción suele detenerse en cuanto el usuario cambia de app. Con WebViewGold, tu app de Bolt pasa la URL de un stream al reproductor nativo con un solo enlace (startnativevideo://), así que los espectadores tienen pantalla completa y Picture-in-Picture en ambas plataformas, y AirPlay en iPhone. En iOS también puedes mantener el audio HTML sonando en segundo plano para podcasts, radio y cursos de audio.
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
BBolt
Reproducción de video y audioYa en tu bolsillo
App Store · Google Play Aprobada
Lo que aporta el reproductor nativo
Reproductor nativo con Picture-in-Picture
Enlaza a startnativevideo://videostreamurl= seguido de la URL directa de un stream y WebViewGold abre el reproductor de video del sistema en iOS y Android. Los usuarios pueden reducir el video a una ventana flotante y seguir navegando por la app, o incluso cambiar a otra app.
AirPlay y controles conocidos
En iPhone y iPad, el reproductor nativo incluye AirPlay, pantalla completa y los controles de reproducción estándar que los usuarios ya conocen. Sin bibliotecas de reproductor propias que mantener en la web app.
Audio en segundo plano en iOS
Para podcasts, emisoras de radio, meditaciones y lecciones de audio, la configuración de audio HTML en segundo plano mantiene sonando el audio de la web app cuando el iPhone está bloqueado o hay otra app en primer plano. Es un ajuste del proyecto de Xcode, explicado paso a paso en el video de la documentación de iOS.
Solo URLs directas de stream
El reproductor nativo necesita un archivo .mp4 o un stream HLS .m3u8, no la URL de una página que incrusta un video. Los servicios de streaming como Mux, Cloudflare Stream o Bunny Stream te dan URLs HLS; las páginas de YouTube y Vimeo siguen siendo inserciones normales.
Prompt para Bolt
Pega esto en Bolt para implementar la parte de la web app. Revisa el resultado, publica y luego prueba dentro de la app WebViewGold.
Prompt para pegar en Bolt
Prepara la reproducción de video y audio para nuestra app nativa de WebViewGold. Añade un componente MediaPlayer: en navegadores normales renderiza un elemento video HTML5 con controls, playsinline y un póster; cuando navigator.userAgent contiene "WebViewGold", renderiza un botón Reproducir que asigna "startnativevideo://videostreamurl=" + streamUrl a window.location.href, donde streamUrl es un enlace directo .mp4 o HLS .m3u8. Crea una Netlify Function get-stream-url que verifique el access token de Supabase de la cabecera Authorization, compruebe que el usuario puede ver la lección y devuelva una URL firmada de Supabase Storage válida durante dos horas, usando SUPABASE_SERVICE_ROLE_KEY del entorno de Netlify. No expongas nunca esa clave mediante una variable VITE_. Para la página del podcast, mantén un elemento audio estándar con controls y un botón de reproducir visible. Muestra un estado de error claro si no se puede cargar la URL del stream.
Mi WebView de iOS finalmente está aprobada. ¡Gracias!
Unos 30 minutos, la mayor parte probando en teléfonos reales.
Consigue una URL directa del stream
Usa un archivo .mp4 de tu almacenamiento o una playlist HLS .m3u8 de tu servicio de video. Las lecciones largas se transmiten mejor en HLS, porque el reproductor adapta la calidad a la conexión.
Haz que la URL se pueda reproducir por sí sola
El reproductor nativo carga el stream por su cuenta y puede que no vea la sesión iniciada del WebView. Para lecciones de pago, crea en el servidor una URL firmada de corta duración después de comprobar el acceso, y pasa esa.
Llama al puente solo dentro de la app
Configura un user agent personalizado que contenga un token como WebViewGold (useragent_iphone y useragent_ipad en Config.swift, USER_AGENT en Config.java). Si está presente, el botón de reproducir navega a startnativevideo://videostreamurl= más la URL del stream; en un navegador se reproduce el elemento <video> normal.
Activa el audio en segundo plano si lo necesitas (iOS)
Solo para apps cuyo audio debe seguir sonando con la pantalla bloqueada. Sigue el video sobre audio HTML en segundo plano de la documentación de iOS y luego prueba con el teléfono bloqueado y con otra app en primer plano.
Prueba como un espectador
Inicia un video, abre Picture-in-Picture, navega a otra página, bloquea el teléfono, gíralo a horizontal y prueba con una conexión móvil lenta. Hazlo en un iPhone y en un teléfono Android.
Una función de reproducción para app y navegador
Una sola función para ambos mundos. La URL firmada del stream viene de la parte de servidor de tu stack: Supabase, Firebase o tu propia API.
javascript
// User agent personalizado con "WebViewGold", definido en Config.swift / Config.java
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1;
// streamUrl: .mp4 directo o HLS .m3u8 (firmada y de corta duración para contenido de pago)
function playVideo(streamUrl, videoEl) {
if (IN_APP) {
window.location.href = "startnativevideo://videostreamurl=" + streamUrl;
} else {
videoEl.src = streamUrl; // fuera de Safari, HLS necesita una biblioteca como hls.js
videoEl.play();
}
}
// En el navegador, mantén un reproductor normal:
// <video controls playsinline preload="metadata" poster="/poster.jpg"></video>
Revisión de las tiendas y reglas de contenido
Directriz 2.5.4 de Apple: los servicios en segundo plano deben usarse para su propósito previsto. Activa el audio en segundo plano solo cuando la app reproduzca audio que el usuario espera seguir escuchando (podcast, radio, curso de audio) e indica al revisor en las notas de revisión dónde encontrarlo.
Los cursos y videos premium que se venden dentro de la app de iOS son contenido digital: Apple exige compras dentro de la app (directriz 3.1.1) y en Android se aplica Google Play Billing. Consulta compras dentro de la app para apps de vibe coding.
Transmite solo contenido sobre el que tengas derechos. Las apps llenas de películas, deportes o canales de TV de terceros reciben preguntas sobre licencias (directriz 5.2 sobre propiedad intelectual).
Un catálogo de videos por sí solo puede parecer un sitio web (directriz 4.2). La reproducción nativa con Picture-in-Picture, los recordatorios push de nuevas lecciones y una pantalla sin conexión cuidada justifican juntos que sea una app.
Android: la documentación de WebViewGold describe el reproductor de video nativo con Picture-in-Picture, no un interruptor de audio en segundo plano. Prueba qué hace tu audio cuando la app está minimizada y no prometas reproducción con la pantalla bloqueada en la ficha de Play hasta haberlo comprobado.
Preguntas frecuentes
¿Puedo reproducir videos de YouTube o Vimeo en el reproductor nativo?
No a través de startnativevideo://, que necesita un archivo .mp4 directo o un stream HLS .m3u8. Las inserciones de YouTube y Vimeo suelen seguir funcionando como iframes normales dentro de la app, con su propio reproductor y su botón de pantalla completa.
¿Funciona Picture-in-Picture en iOS y Android?
Sí. Tanto la documentación de iOS como la de Android describen startnativevideo:// con Picture-in-Picture: el video sigue reproduciéndose en una ventana flotante mientras el usuario navega por la app o por otra app.
¿Seguirá sonando el audio con la pantalla bloqueada?
En iOS, sí, una vez activado el audio HTML en segundo plano en el proyecto de Xcode como muestra la documentación de iOS. En Android, la documentación de WebViewGold no describe un modo de audio en segundo plano, así que prueba tu reproductor en un dispositivo antes de prometerlo.
¿Necesito compras dentro de la app para los videos de pago de mi app de Bolt?
Si la propia app vende el curso o la suscripción, sí: Apple exige compras dentro de la app para el contenido digital (directriz 3.1.1) y Google exige Play Billing. El contenido comprado en tu sitio web a menudo también se puede desbloquear en la app; revisa el texto actual de las directrices 3.1.1 y 3.1.3, porque las reglas sobre enlaces de compra externos varían según la región.
¿Pueden los usuarios descargar videos para verlos sin conexión?
Los enlaces que terminan en .mp4 los gestiona el descargador de archivos de WebViewGold, que guarda el archivo en el dispositivo. Una biblioteca sin conexión completa dentro de la web app de Bolt es un proyecto mayor; para la mayoría de las apps de cursos basta con el streaming más la pantalla sin conexión nativa.
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.