Share extension de iOS
Los usuarios tocan Compartir en Safari, Fotos u otra app y eligen la tuya. WebViewGold pasa el contenido a tu app web en la variable de JavaScript sharedData: textos y enlaces como texto plano, imágenes como cadenas Base64.
Cursor + share extension
Una herramienta de marcadores, un recetario o un moodboard solo resultan útiles si guardar cuesta un toque. Con WebViewGold, tu app de Cursor aparece en la hoja de compartir de iOS y Android, y lo que el usuario comparta (un enlace, un texto, una foto) llega a tu app web en la variable de JavaScript sharedData. Tu código decide qué pasa después: rellenar un formulario, guardarlo en tu backend o abrir un editor.
Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.
Los usuarios tocan Compartir en Safari, Fotos u otra app y eligen la tuya. WebViewGold pasa el contenido a tu app web en la variable de JavaScript sharedData: textos y enlaces como texto plano, imágenes como cadenas Base64.
Quita el comentario de los filtros de intent ya preparados en AndroidManifest.xml (ACTION_SEND para text/plain y image/*, ACTION_SEND_MULTIPLE para varias imágenes) y el icono de la app aparecerá en el diálogo de compartir de Android. Misma variable, mismo manejo: sharedData.
Comprueba sharedData al cargar la página, distingue enlaces, textos e imágenes y lleva al usuario a una pantalla de guardado ya rellenada. No se guarda nada hasta que tu propio código lo envía a Tus propias rutas de API o servicios, así que el usuario mantiene el control.
Pega esto en Cursor para implementar la parte de la web app. Revisa el resultado, publica y luego prueba dentro de la app WebViewGold.
Prompt para el agente de Cursor: Implementa un inbox de destino para compartir para la app nativa de WebViewGold. 1) Añade .cursor/rules/webviewgold.mdc documentando que la app nativa inyecta la variable global sharedData (texto, URL o imagen en Base64) cuando un usuario comparte contenido en la app en iOS (share extension) o Android (share intent), y que solo se lee cuando navigator.userAgent contiene nuestro token personalizado de WebViewGold. 2) Crea src/lib/share-inbox.ts, que exporte readShared(), classify(value), que devuelve link, image o text, base64ToBlob(value, mime) y una deduplicación basada en sessionStorage. 3) Escribe tests unitarios para classify con una URL, un texto que contiene una URL, una cadena Base64 JPEG (empieza por /9j/) y una PNG (empieza por iVBORw0KGgo). 4) Monta un listener en la raíz de la app que compruebe al cargar y tras un segundo y redirija a una pantalla /save. 5) Reutiliza nuestra vía de subida existente para las imágenes y nuestro cliente de API existente para guardar; no añadas un nuevo proveedor de almacenamiento. 6) Exige autenticación al guardar y continúa después del login. 7) Resume los archivos que has cambiado.

Con una buena versión optimizada de su aplicación web, puedes tener una impresionante aplicación móvil en un par de minutos. ¡Además del servicio al cliente es muy agradable y muy útil! ¡Puedo recomendar WebViewgold :-)
Un destino para compartir se gana su sitio cuando un toque guarda algo que, de otro modo, el usuario tendría que copiar, cambiar de app y pegar. Usos típicos:
Compartes un artículo desde Safari o Chrome, la app obtiene el título y la imagen de vista previa en el servidor, el usuario añade una etiqueta y toca Guardar.
Un enlace a una receta, un restaurante desde una app de mapas, una página de producto: guardados en una colección, un plan de viaje o una lista de deseos en lugar de en un archivo de notas caótico.
La foto de un recibo en un control de gastos, una captura en un reporte de errores, la foto de una habitación en un moodboard o un inventario. La imagen llega en Base64, lista para subirla.
Comparte una oferta de empleo o el enlace a un perfil en un tracker o un CRM y llega directamente a un formulario "Nueva entrada" ya rellenado, con la URL ya analizada.
El texto resaltado en cualquier app se convierte en una nota, una tarjeta de estudio o un prompt para tu función de IA, con el enlace de origen adjunto cuando el texto compartido contiene uno.
Alrededor de una hora, casi toda en la pantalla de guardado de tu app web.
Decide qué hace un contenido compartido en tu app de Cursor: guardar un enlace, adjuntar una foto, empezar una nota. Una acción clara convierte mejor que un menú de opciones.
Sigue la Documentación para iOS para activar la share extension en el proyecto de Xcode de WebViewGold y luego instala la compilación en un iPhone real. La hoja de compartir solo muestra extensiones de apps instaladas, así que el simulador no sirve bien para probarlo.
En AndroidManifest.xml deja solo los filtros que de verdad gestionas: text/plain para enlaces y texto, image/* para una foto, SEND_MULTIPLE para varias (Documentación para Android). Un destino para compartir que acepta imágenes y luego las ignora da una mala primera impresión.
Comprueba typeof sharedData !== "undefined" al cargar y otra vez tras un breve retraso. Los valores que empiezan por http son enlaces; las cadenas Base64 largas son imágenes (los datos JPEG empiezan por /9j/, los PNG por iVBORw0KGgo); todo lo demás es texto, quizá con una URL dentro.
Si el usuario no ha iniciado sesión, guarda el elemento compartido en sessionStorage, llévalo por tu flujo de inicio de sesión y restaura después la pantalla de guardado. Nunca pierdas un contenido compartido sin avisar.
Convierte las imágenes en un Blob, redimensiónalas y súbelas, obtén los títulos de los enlaces en el servidor y guarda el registro en Tus propias rutas de API o servicios; después muestra un estado de éxito claro (una llamada a successhaptic:// encaja muy bien aquí).
Independiente del framework; llama a checkSharedContent() cuando tu app se haya montado. Sustituye YourAppToken por el user agent personalizado que definiste en Config.swift (useragent_iphone, useragent_ipad) y Config.java (USER_AGENT).
var inApp = navigator.userAgent.indexOf("YourAppToken") !== -1;
function classifyShared(raw) {
var value = String(raw).trim();
var b64 = value.replace(/^data:image\/[a-z+]+;base64,/i, "");
if (/^https?:\/\//i.test(value)) return { kind: "link", url: value };
if (b64.length > 1000 && /^[A-Za-z0-9+\/=\s]+$/.test(b64.slice(0, 4000))) {
return { kind: "image", base64: b64, mime: b64.indexOf("iVBORw0KGgo") === 0 ? "image/png" : "image/jpeg" };
}
var link = value.match(/https?:\/\/\S+/);
return { kind: "text", text: value, url: link ? link[0] : null };
}
function base64ToBlob(b64, mime) {
var bin = atob(b64.replace(/\s/g, ""));
var bytes = new Uint8Array(bin.length);
for (var i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);
return new Blob([bytes], { type: mime });
}
function checkSharedContent() {
if (!inApp || typeof sharedData === "undefined" || !sharedData) return false;
var fingerprint = String(sharedData).length + ":" + String(sharedData).slice(0, 64);
if (sessionStorage.getItem("lastShare") === fingerprint) return false; // ya procesado
sessionStorage.setItem("lastShare", fingerprint);
sessionStorage.setItem("pendingShare", JSON.stringify(classifyShared(sharedData)));
window.location.href = "/save"; // tu pantalla de guardado ya rellenada
return true;
}
window.addEventListener("load", function () {
if (!checkSharedContent()) setTimeout(checkSharedContent, 1000);
});Un destino para compartir es una de las integraciones nativas que una pestaña de Safari no puede ofrecer en iOS, y eso lo convierte en un argumento sólido para la directriz 4.2. Viene con algunas reglas.
Muestra el flujo de compartir en una captura de pantalla y menciónalo en inglés en las notas para la revisión ("Share a link from Safari to save it"). Los revisores solo valoran las funciones que encuentran.
Las extensiones deben incluir funcionalidad real, describirse con precisión en tu texto de marketing y no contener marketing, publicidad ni compras dentro de la app. Mantén el flujo de compartir como una acción de guardado limpia.
Las extensiones deben estar relacionadas con el contenido y la funcionalidad de la app. Una app de recetas que acepta enlaces a recetas encaja; un destino para compartir que solo abre la página de inicio, no.
Las fotos y los enlaces compartidos pueden contener datos personales. Sube solo lo que el usuario confirmó, descríbelo en tu política de privacidad y decláralo en App Privacy (fotos, contenido del usuario) y en el formulario Data safety de Google Play.
Sí. iOS usa una share extension y Android usa share intents; en ambos casos WebViewGold pasa el contenido a tu app web en la misma variable de JavaScript, sharedData, así que un solo manejador cubre las dos plataformas.
Texto y enlaces, e imágenes, que llegan como cadenas Base64. Android tiene además un filtro de intent preparado para varias imágenes a la vez. Otros tipos de archivo, como los PDF, no forman parte de la API documentada.
En Android, una PWA instalada puede registrarse como destino para compartir mediante la Web Share Target API en navegadores basados en Chromium. En iOS, Safari no ofrece nada equivalente para apps web, así que una share extension nativa es la forma de aparecer en la hoja de compartir del iPhone.
Guarda el elemento compartido en sessionStorage, lleva al usuario por el inicio de sesión y devuélvelo a la pantalla de guardado con el contenido todavía ahí. Perder un contenido compartido después del login es el error más común en este flujo.
Ninguna función por sí sola lo hace. Es una capacidad nativa potente y visible; junto con notificaciones push, manejo sin conexión y un diseño propio de app, demuestra que tu app de Cursor es más que un sitio web.
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.
$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.
Ver planes en la página principal$349 por licencia, complemento de pago único
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.
Cómo funciona el Cloud Builder Prueba la demo gratuita$698 por plataforma $798
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.
Detalles del Full Service Con tecnología dePrecios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.
Garantía de aprobación en App Store & Google Play – o te devolvemos el dinero en 14 días
¿Prefieres delegarlo? Full Service: configuramos, compilamos y entregamos en 72 horas, desde $698 por plataforma. ¿Preguntas? Chatea con nosotros 24/7.
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.