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

v0 + calendario

Botones de añadir al calendario para tu app de v0

Una reserva que no está en el calendario del usuario es una ausencia anunciada. En iOS, WebViewGold permite añadir un evento a la app Calendario desde un enlace normal a un archivo .ics, así que tu app de v0 no necesita más que una URL que devuelva el evento. Android no tiene una API de calendario dedicada en WebViewGold; aquí tienes lo que funciona allí en su lugar.

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

Lo que funciona en cada plataforma

iOS: enlace a un archivo .ics

WebViewGold está preparado para Calendario (antes iCal): un enlace normal a un archivo .ics permite al usuario añadir la entrada al calendario del iPhone o iPad. Sin esquema de URL ni puente JavaScript, y la web app nunca lee el calendario del usuario; solo ofrece un evento.

Android: descarga o Google Calendar

La documentación de Android no incluye una API de calendario. Funcionan dos rutas: añade .ics a downloadableExtension en Config.java para que el archivo se descargue y pueda abrirse con una app de calendario que importe archivos .ics, y ofrece un enlace "Añadir a Google Calendar" que se abra fuera de la app.

Un archivo de evento por reserva

Tu servidor devuelve un pequeño archivo de texto (un VCALENDAR con un VEVENT) por cada reserva, clase o cita. La misma URL sirve para el sitio web, la app de iOS y la descarga en Android.

Prompt para v0

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

Prompt para pegar en v0
Añade una función Añadir al calendario que funcione en el envoltorio de app WebViewGold. 1) Crea app/calendar/[token]/route.ts: quita un .ics final del token, carga la reserva por su ics_token aleatorio y devuelve un VCALENDAR con un VEVENT (UID booking-ID@ourdomain, DTSTAMP, DTSTART y DTEND en UTC terminados en Z, SUMMARY, LOCATION, DESCRIPTION con la URL de la reserva, un VALARM una hora antes) con Content-Type text/calendar; charset=utf-8 y Cache-Control no-store. 2) Añade una columna ics_token. 3) En la página de la reserva, renderiza un enlace simple a /calendar/TOKEN.ics en la misma pestaña. 4) En un Client Component, cuando navigator.userAgent incluya WebViewGold-Android, renderiza también Añadir a Google Calendar con un enlace https://calendar.google.com/calendar/render?action=TEMPLATE. 5) Adjunta el mismo .ics al correo de confirmación.

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 :-)

Julian Koch · Cofundador de Dueldonkey · CodeCanyon

Añade un botón "Añadir al calendario"

Alrededor de una hora, la mayor parte para el endpoint .ics.

  1. Crea el endpoint .ics

    Añade una ruta como /calendar/BOOKING_TOKEN.ics que devuelva el evento con Content-Type: text/calendar; charset=utf-8. Mantén la ruta terminada en .ics, como en el ejemplo de WebViewGold, y usa un token imposible de adivinar en lugar de depender de la sesión iniciada.

  2. Rellena los campos importantes

    Un UID estable por reserva, DTSTAMP, DTSTART y DTEND en UTC (terminados en Z), SUMMARY, LOCATION y una DESCRIPTION con un enlace de vuelta a la reserva. Escapa las comas y los puntos y coma del texto.

  3. Enlázalo en la misma pestaña

    Un simple <a href="https://yourdomain.com/calendar/TOKEN.ics">. No lo abras en una ventana nueva ni con target="_blank"; un WebView no tiene dónde mostrarla.

  4. Resuelve Android

    Añade .ics a downloadableExtension en Config.java para la ruta de descarga, y muestra un enlace "Añadir a Google Calendar" con calendar.google.com en BROWSER_BLACKLIST, para que se abra en el navegador del sistema, donde la mayoría de los usuarios tienen la sesión de Google iniciada, y no dentro del WebView.

  5. Prueba en dispositivos reales

    Añade un evento en un iPhone y luego revisa la zona horaria, la duración y el enlace de la descripción. En Android, prueba teléfonos de dos fabricantes; las apps de calendario difieren en cómo abren los archivos .ics descargados.

Un archivo .ics mínimo

Esto es todo lo que necesita un calendario. Según la especificación iCalendar, las líneas terminan en CRLF; las bibliotecas se encargan de ello. Parte de servidor de tu stack: Route handlers y server actions de Next.js, Postgres mediante Neon o Supabase.

text
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//YourApp//Bookings//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20261101T120000Z
DTSTART:20261205T170000Z
DTEND:20261205T180000Z
SUMMARY:Clase de yoga
LOCATION:Estudio 2\, Calle Mayor 14
DESCRIPTION:Gestiona tu reserva: https://yourdomain.com/bookings/123
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Clase de yoga dentro de una hora
END:VALARM
END:VEVENT
END:VCALENDAR

La lógica del botón

El enlace .ics en todas partes y el enlace de Google Calendar como extra en Android y en escritorio:

javascript
// User agents personalizados: "... WebViewGold-iOS" (Config.swift), "... WebViewGold-Android" (Config.java)
var ua = navigator.userAgent;
var IS_ANDROID_APP = ua.indexOf("WebViewGold-Android") !== -1;
var IS_IOS_APP = ua.indexOf("WebViewGold-iOS") !== -1;

function icsUrl(b) { return "https://yourdomain.com/calendar/" + b.token + ".ics"; }

function googleCalendarUrl(b) {
  var f = function (d) { return d.toISOString().replace(/[-:]|\.\d{3}/g, ""); };
  return "https://calendar.google.com/calendar/render?action=TEMPLATE" +
    "&text=" + encodeURIComponent(b.title) +
    "&dates=" + f(b.start) + "/" + f(b.end) +
    "&details=" + encodeURIComponent(b.url) +
    "&location=" + encodeURIComponent(b.location);
}

// Renderizado: siempre el enlace .ics; el de Google salvo si IS_IOS_APP

Errores frecuentes

  • Zonas horarias: escribe las horas en UTC con una Z final, o incluye un bloque VTIMEZONE correcto. Las horas locales flotantes se desplazan para quien viaja y para usuarios de otras zonas.
  • Un UID nuevo en cada descarga puede crear duplicados. Mantén un UID por reserva; cómo trata un calendario una reimportación depende de la app.
  • URLs .ics protegidas con login: puede que la petición que descarga el archivo no lleve la sesión web del usuario. Un token aleatorio por reserva es la opción fiable.
  • Las suscripciones de calendario (feeds webcal://) son otra función; la documentación de WebViewGold cubre archivos .ics individuales.
  • Un botón de calendario es un buen detalle nativo, no una función que por sí sola haga pasar la revisión a una app. Combínalo con recordatorios push y deep links de vuelta a la reserva.

Preguntas frecuentes

¿Tiene WebViewGold una API de calendario para Android?

No una dedicada; la integración de calendario de la documentación es solo para iOS. En Android, ofrece el archivo .ics como descarga (añade .ics a downloadableExtension en Config.java) y un enlace Añadir a Google Calendar que se abra fuera de la app.

¿Puede la app leer el calendario del usuario para comprobar la disponibilidad?

No. El flujo .ics solo ofrece un evento que el usuario añade. La disponibilidad se gestiona en tu servidor, a partir de tus propios datos de reservas.

¿Puedo añadir eventos recurrentes o recordatorios?

Sí, dentro del archivo .ics: una línea RRULE para clases que se repiten y un bloque VALARM para un recordatorio. Cómo aparece el recordatorio depende de la app de calendario del usuario; para recordatorios que controles tú, usa notificaciones push.

¿Cómo genero el archivo .ics para mi app de v0?

Una pequeña ruta en el servidor construye el texto. Para un solo evento no hace falta ninguna biblioteca, aunque ical-generator (Node) o icalendar (Python) ayudan con los eventos recurrentes y el escapado. Pide a v0 un endpoint que devuelva text/calendar para un token de reserva.

¿Los enlaces de calendario también funcionan en el navegador?

Sí. La misma URL .ics descarga o abre el evento en navegadores de escritorio y móviles, así que un solo botón sirve para el sitio web y para ambas apps.

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 v0?

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.