Saltar al contenido
WebViewGold Del vibe coding a la App Store
Español
Consigue WebViewGold

Replit + gestión de enlaces

Enlaces externos y gestión de URLs en tu app de Replit

En la web, un enlace a Stripe, al inicio de sesión de Google, a WhatsApp o a tu centro de ayuda simplemente funciona. Dentro de una app, cada enlace necesita un destino: la propia app, una pestaña del navegador dentro de la app, Safari o Chrome, u otra app como Mail, Teléfono o WhatsApp. Si te equivocas, los usuarios acaban atrapados en una página de terceros sin botón atrás, con la sesión iniciada en el sitio equivocado o pagando en un navegador mientras la app espera.

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

Dónde debe abrirse cada tipo de enlace

EnlaceMejor destinoPor quéCómo hacerlo en WebViewGold
Tu propio dominioLa app (WebView principal)Es tu appLos enlaces internos se quedan en la app
Stripe Checkout, enlaces de pago, 3-D Secure, PayPalLa app (WebView principal)La URL de éxito vuelve a tu dominio con la sesión intactaMantén los enlaces externos en la app (opción 0), o añade estos hosts como excepciones que nunca van al navegador (safariblacklist, BROWSER_BLACKLIST)
Inicio de sesión con Google y FacebookSocial Login HelperGoogle bloquea los WebViews integrados; el helper ejecuta ese paso en una ventana de inicio de sesión aceptada y vuelvegoogle_login_helper_triggers / GOOGLE_LOGIN_HELPER_TRIGGERS; Android también ofrece el prefijo googlelogin:// para una Chrome Custom Tab
Términos, centro de ayuda, documentación o blog en otros dominiosPestaña dentro de la appBarra de direcciones y botón de cerrar; la app sigue debajoalwaysOpenInInAppTab / ALWAYS_OPEN_IN_INAPP_TAB, o target="_blank" con la opción de enlaces especiales en 1
WhatsApp (wa.me), Instagram, YouTube, X, TikTokSu app o el navegador del sistemaLos usuarios tienen la sesión iniciada allí, no en tu WebViewsafariwhitelist / BROWSER_WHITELIST
mailto:, tel:, sms:Mail, Teléfono, MensajesEsquemas del sistema que gestiona el propio teléfonoUsa enlaces estándar; WebViewGold se los pasa al sistema
Enlaces a App Store y Google PlayLa app de la tiendaActualizaciones, valoraciones, tus otras appsapps.apple.com y play.google.com en la lista de enlaces que siempre salen de la app

Prompt para Replit

Pega esto en Replit para implementar la parte de la web app. Revisa el resultado, publica y luego prueba dentro de la app WebViewGold.

Prompt para pegar en Replit Agent
Esta app va a funcionar dentro del envoltorio nativo WebViewGold (su user agent contiene "WebViewGold").
1. Asegúrate de que cada enlace absoluto y cada redirección usen el dominio desplegado de replit.app o el dominio propio, nunca una dirección de desarrollo replit.dev.
2. Tras el inicio de sesión con Replit Auth, redirige a una ruta del mismo dominio y mantén la cookie de sesión tal como está.
3. Crea la sesión de Stripe Checkout en el servidor y envía al usuario allí en la misma ventana (window.location.href o una redirección 303), con success_url y cancel_url en el dominio de producción.
4. Abre las páginas de documentación, de estado y legales de otros dominios con target="_blank".
5. Renderiza los botones de contacto como enlaces mailto:, tel: y https://wa.me/.
6. Muestra una lista de todos los hosts externos a los que enlaza la app.

¡Estoy muy feliz de haber comprado esta aplicación! Documentación extremadamente fácil y excelente. Estaba en contacto con el servicio al cliente, respondieron muy rápido y de forma muy amigable. Resolvieron mi pregunta en un día. 10/10 lo recomendaría".

Nelis Geiger · CodeCanyon

Tres clases de enlaces y los interruptores que los controlan

Enlaces internos

Mismo dominio que el host configurado. Se cargan en el WebView principal, por eso la URL de inicio debe ser tu dominio de producción. Prueba de forma explícita los subdominios que uses para la autenticación, el checkout o la API; que cuenten como internos depende del host que hayas configurado.

Enlaces externos

Cualquier otro dominio. La opción 0 los mantiene en la app. iOS puede enviarlos a Safari con externalLinkHandlingOptions = 2; Android añade 1 (pestaña dentro de la app) y 2 (navegador del sistema) para EXTERNAL_LINK_HANDLING_OPTIONS. Las listas por host tienen prioridad sobre el valor por defecto: safariwhitelist, safariblacklist y alwaysOpenInInAppTab en iOS, BROWSER_WHITELIST, BROWSER_BLACKLIST y ALWAYS_OPEN_IN_INAPP_TAB en Android.

Enlaces especiales

Enlaces con target="_blank" (en Android, también los que terminan en #). specialLinkHandlingOptions y SPECIAL_LINK_HANDLING_OPTIONS: 0 WebView principal, 1 pestaña dentro de la app, 2 navegador. En Android, un prefijo newtab: fuerza ese comportamiento en un enlace concreto. Para los enlaces que son especiales y externos a la vez, Android sigue el ajuste de enlaces especiales, mientras que en iOS externalLinkHandlingOptions = 2 los sigue enviando a Safari, así que déjalo en 0 si quieres la pestaña dentro de la app.

Configura la gestión de enlaces en una app de Replit

Unos 15 minutos con un inventario de enlaces, y luego una prueba en teléfonos reales.

  1. Haz una lista de todos los enlaces salientes de tu app de Replit

    Recorre la app o busca en el código: checkout y portal de facturación, proveedores de inicio de sesión, perfiles sociales, chat de soporte, páginas legales, insignias de las tiendas, enlaces mailto: y tel:, mapas. Anota el destino de cada uno según la tabla de arriba.

  2. Define el valor por defecto

    Para la mayoría de las apps: mantén los enlaces externos en la app (opción 0 en ambas plataformas) y gestiona las excepciones aparte. Enviar todos los enlaces externos al navegador rompe las redirecciones de pago y de inicio de sesión que tienen que volver a la app.

  3. Añade las excepciones

    Apps sociales, WhatsApp y enlaces de tiendas a safariwhitelist (iOS) y BROWSER_WHITELIST (Android); términos, documentación y centro de ayuda a alwaysOpenInInAppTab y ALWAYS_OPEN_IN_INAPP_TAB; los hosts de pago y autenticación a las listas de nunca al navegador si tu valor por defecto es el navegador. Escribe los hosts exactamente como los enlazas, sin https://.

  4. Activa el login helper

    Añade https://accounts.google.com a google_login_helper_triggers (iOS) y GOOGLE_LOGIN_HELPER_TRIGGERS (Android). No te limites a enviar Google a Safari: la sesión acabaría en Safari, no en la app (la solución a disallowed_useragent).

  5. Trata las compras digitales por separado

    Stripe para bienes físicos y servicios del mundo real puede quedarse en la app. Para suscripciones o créditos que se usan dentro de la app, Apple espera In-App Purchase (directriz 3.1.1) y Google espera Play Billing, salvo las excepciones regionales, así que oculta ese checkout dentro de la app (Stripe frente a In-App Purchase).

  6. Prueba cada tipo de enlace

    Carga https://www.webviewgold.com/demo/testlinks.php como URL de inicio temporal para ver cómo se comporta cada tipo de enlace, y luego toca cada enlace saliente de tu app real en un iPhone y en un teléfono Android, incluido un pago de prueba completo.

Una configuración inicial típica

Solo valores: mantén la sintaxis que ya usan las líneas de tu Config.swift y Config.java. En Android, ALWAYS_OPEN_IN_INAPP_TAB recibe prefijos de URL; las demás listas reciben hosts.

text
// Config.swift (iOS)
externalLinkHandlingOptions  = 0     // los enlaces externos se quedan en la app
specialLinkHandlingOptions   = 1     // target="_blank" abre la pestaña dentro de la app
safariwhitelist              = ["wa.me", "api.whatsapp.com", "www.instagram.com", "apps.apple.com"]
alwaysOpenInInAppTab         = ["help.yourdomain.com", "docs.yourdomain.com"]
google_login_helper_triggers = ["https://accounts.google.com"]

// Config.java (Android)
EXTERNAL_LINK_HANDLING_OPTIONS = 0
SPECIAL_LINK_HANDLING_OPTIONS  = 1
BROWSER_WHITELIST              = ["wa.me", "api.whatsapp.com", "www.instagram.com", "play.google.com"]
ALWAYS_OPEN_IN_INAPP_TAB       = {"https://help.yourdomain.com", "https://docs.yourdomain.com"}
GOOGLE_LOGIN_HELPER_TRIGGERS   = {"https://accounts.google.com"}

Los fallos de enlaces con los que se publican las apps de vibe coding

  • Checkout en el navegador. Stripe se abre en Safari o Chrome, el pago se completa, la página de éxito se carga en el navegador y la app sigue mostrando el estado sin pagar. Mantén el checkout en la app, o haz que la URL de retorno vuelva a ella con Universal Links (consulta la guía de deep links).
  • Checkout en una ventana emergente. El código que abre el checkout con window.open o target="_blank" lo convierte en un enlace especial, así que la página de éxito se carga en la pestaña dentro de la app en lugar de en la app. Navega con window.location.href.
  • Un enlace al portal de facturación para planes digitales en la app de iOS. Fuera de las excepciones regionales, Apple puede interpretarlo como un intento de desviar a los usuarios de In-App Purchase (directriz 3.1.1). Muéstralo solo en la web.
  • Una página de terceros sin forma de volver. Los iPhone no tienen botón atrás. Todo lo que no sea tu app va en la pestaña dentro de la app o en otra app.
  • Enlaces de WhatsApp, Instagram o mapas que cargan su sitio web dentro de la app, a menudo detrás de un muro de inicio de sesión. Envía esos hosts al sistema para que se abra la app real.
  • Todo se abre en Safari. Una app que no para de salir de sí misma parece un marcador, que es la impresión que hay detrás de muchos rechazos por la directriz 4.2.

Preguntas frecuentes

¿Por qué mi checkout de Stripe pierde la sesión en la app?

Normalmente porque el checkout se abrió en Safari o Chrome: el pago funciona, pero la URL de éxito se carga en el navegador, donde el usuario no tiene la sesión iniciada. Mantén checkout.stripe.com en el WebView principal (opción 0 para enlaces externos) y navega con window.location.href, para que la redirección vuelva a la app.

¿Funcionan los enlaces mailto:, tel: y de WhatsApp dentro de la app?

Los enlaces mailto:, tel: y sms: se pasan a Mail, a la app Teléfono y a Mensajes. Para WhatsApp, añade wa.me y api.whatsapp.com a la lista de enlaces que siempre salen de la app (safariwhitelist, BROWSER_WHITELIST), para que se abra la app de WhatsApp en lugar del sitio web de WhatsApp dentro de tu app. Prueba cada uno en un teléfono real.

¿Qué es la pestaña dentro de la app?

Una vista de navegador que se abre sobre tu app con barra de direcciones y botones de navegación. Los usuarios leen la página y la cierran para volver exactamente a donde estaban. Es el lugar adecuado para los términos, los artículos de ayuda y otro contenido de terceros.

¿Puedo abrir todos los enlaces externos en Safari o Chrome?

Puedes (externalLinkHandlingOptions = 2 en iOS, EXTERNAL_LINK_HANDLING_OPTIONS = 2 en Android), pero entonces añade todos los hosts de pago, inicio de sesión y API a las excepciones que nunca van al navegador (safariblacklist, BROWSER_BLACKLIST), o las redirecciones pensadas para tu app acabarán en el navegador.

¿Puede la app de iOS enlazar a mi página de precios web?

Para bienes digitales, Apple generalmente no permite botones ni enlaces a compras externas. Hay excepciones en regiones concretas, como el storefront de EE. UU. tras la orden judicial de 2025 y los términos alternativos de la UE, y van cambiando. Consulta el texto actual de la directriz 3.1.1 en App Store Connect antes de contar con una de ellas.

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.

Ver planes en la página principal

Full Service

$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 de WeSetupYourWebViewApp

Precios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.

¿Listo para lanzar tu app de Replit?

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.