У меня проблема с файлами .ics и календарем на моем смартфоне. Во-первых, создать файл ICS и загрузить его, я использую эту функцию:Загрузите .ics с веб-сайта на Android-календарь
function createEventCalendar($start, $end, $description, $location) {
$event = array();
$rand = rand(5, 1000000000);
$event['name'] = "event";
$event['data'] = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//blabla//blabla//FR\nBEGIN:VEVENT\nDTSTAMP:".date('Ymd\THis')."\nSTATUS:CONFIRMED\nUID:".$rand."\nDTSTART:".date('Ymd\THis', strtotime($start))."\nDTEND:".date('Ymd\THis', strtotime($end))."\nSUMMARY:Rendez-vous assurance\nDESCRIPTION:".$description."\nLOCATION:".$location."\nEND:VEVENT\nEND:VCALENDAR\r\n";
return $event;
}
public function downloadEventCalendar($event) {
$eventname = $event['name'].'.ics';
header("Content-Type: text/x-vCalendar");
header("Content-Disposition: attachment; filename=\"".$eventname."\"");
echo $event['data'];
exit();
}
Для моего Exemple в DTEND
закончить 1 часа после DTSTART
. Моя проблема в том, когда я загрузить этот файл из моего XPERIA и нажмите на событие event.ics
, я выбираю Default account : Calendar of the device
и событие никогда не импортируется, и экран блокируется, как вы можете видеть:
ли я забыл добавить параметр для Android? потому что он работает для IOS.
UPDATE: здесь ICS сгенерированного кода
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//blaBla//blaBla//FR
BEGIN:VEVENT
DTSTAMP:20150804T095037
STATUS:CONFIRMED
UID:495370174
DTSTART:20150901T120000
DTEND:20150901T130000
SUMMARY:My summary
DESCRIPTION:Description of the event
LOCATION:My calendar
END:VEVENT
END:VCALENDAR
Благодарность
я сдал 'event.ics' в валидатор, и исправлены некоторые ошибки, но он не работает в любом случае. Я обновил свой код с помощью генерации кода ICS. Я добавил '\ r \ n' в конце моего кода. Вы видите ошибки? – Remi
Я нашел веб-сайт, который делает то, что я хочу [здесь] (https://addthisevent.com/), я попытался скопировать «event.ics», сгенерированный в моем коде. После загрузки и получения точно такого же кода, сгенерированного в 'event.ics', моя не работает ... – Remi
Привет, Реми, я видел некоторые инструкции' strtotime' и думал, что вокруг них не было функций 'date()' , поэтому я думал, что это неправильно. Новое форматирование помогает. Одна из распространенных проблем заключается в том, что некоторые клиенты не поддерживают плавающее время. Попробуйте добавить 'Z' к DTSTART и DTEND, чтобы узнать, разрешает ли он это. – Evert