Generando Eventos de Apple Calendar en PHP
Si estás construyendo una plataforma de eventos personalizada en PHP, inevitablemente necesitarás permitir que los usuarios guarden eventos en Apple Calendar (o Outlook).
Ambas plataformas dependen del formato de archivo .ics.
El Código
Para generar un archivo ICS dinámicamente en PHP, necesitas configurar los encabezados HTTP correctos y generar la carga útil de iCalendar.
<?php
// Configurar encabezados correctos para la descarga de ICS
header('Content-Type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename="evento.ics"');
// Definir detalles del evento
$start = gmdate('Ymd\THis\Z', strtotime('2026-08-01 15:00:00'));
$end = gmdate('Ymd\THis\Z', strtotime('2026-08-01 16:00:00'));
$summary = "Reunión de Desarrolladores";
$description = "Sincronización mensual de desarrolladores.";
$location = "San Francisco, CA";
// Generar la carga útil
echo "BEGIN:VCALENDAR\r\n";
echo "VERSION:2.0\r\n";
echo "PRODID:-//Mi App//ES\r\n";
echo "BEGIN:VEVENT\r\n";
echo "UID:" . uniqid() . "\r\n";
echo "DTSTAMP:" . gmdate('Ymd\THis\Z') . "\r\n";
echo "DTSTART:{$start}\r\n";
echo "DTEND:{$end}\r\n";
echo "SUMMARY:{$summary}\r\n";
echo "DESCRIPTION:{$description}\r\n";
echo "LOCATION:{$location}\r\n";
echo "END:VEVENT\r\n";
echo "END:VCALENDAR\r\n";
?>La Mejor Manera
Formatear fechas, manejar zonas horarias, escapar caracteres especiales y lidiar con las reglas de plegado de líneas en el RFC 5545 es notoriamente difícil de hacer bien en todas las versiones de aplicaciones de calendario.
En lugar de mantener este código tú mismo, puedes usar Invitly. Simplemente crea el evento en el panel de control e incrusta nuestro botón de calendario universal en tus plantillas PHP.