Tengo datos de eventos y quiero que el usuario pueda descargar el archivo ICS y guardarlo en el calendario de su elección
Esta es la función que estoy usando, pero el archivo ics generado solo se admite en el calendario de Outlook. ¿Cómo puedo generar un archivo ICS dinámico para todo tipo de calneder?
export const saveCallInvite = (event) => { const newEvent = { ...event, address: event?.event_url ? event?.event_url : `${event?.address?.line_1} ${event?.address?.line_2}, ${event?.address?.city} ${event?.address?.state}, ${event?.address?.country} ${event?.address?.postal_code} ` } // Create the .ics URL let url = [ "BEGIN:VCALENDAR", "VERSION:2.0", "BEGIN:VEVENT", "DTSTART:" + newEvent.date, "DTEND:", "SUMMARY:" + newEvent.name, "DESCRIPTION:" + newEvent.description, "LOCATION:" + newEvent.address, "BEGIN:VALARM", "TRIGGER:-PT15M", "REPEAT:1", "DURATION:PT15M", "ACTION:DISPLAY", "DESCRIPTION:Reminder", "END:VALARM", "END:VEVENT", "END:VCALENDAR" ].join("\n"); let blob = new Blob([url], { type: 'text/calendar;charset=utf-8' }); if (/msie\s|trident\/|edge\//i.test(window.navigator.userAgent)) { // Open/Save link in IE and Edge window.navigator.msSaveBlob(blob, `.ics`); } else { // Open/Save link in Modern Browsers window.open(encodeURI("data:text/calendar;charset=utf8," + url)); } }Compruebe que tiene los requisitos mínimos para un archivo ics válido según RFC5545. Veo que al menos te faltan algunos requisitos mínimos de VCALENDAR. Algunas aplicaciones de calendario son más complicadas que otras, por lo que es mejor si el archivo es lo más válido posible. Ver https://stackoverflow.com/a/67698638/440290
Luego verifique su archivo ics de salida con todos los validadores de ics. No todos verifican todo y, por lo tanto, pueden darle diferentes errores y advertencias.