Краткое введение
Повторяющиеся события в моем файле iCalendar, сгенерированном PHP, неправильно повторяются в приложениях IOS. Они правильно повторяются в Outlook 2010 и Календаре Google, но не в IOS 8.1 (iPhone 5S и iPad 2).
Подробнее
Следующий файл создает файл календаря, пригодный для подписки из таких приложений, как MS Outlook и Google Calendar. Файл содержит VTIMEZONE и один VEVENT, предназначенный для повторения каждую пятницу с 7 по 28 ноября 2014 г., всего четыре повторения.
Файл iCalendar: http://www.elitesystemer.no/mycal_stack_example.php (полный код ниже)
На обоих моих iDevices (IOS 8.1) это событие происходит только один раз; 7 ноября 2014 г. Такое странное поведение характерно для родного приложения календаря, а также для приложения Week Calendar (сайт: http://weekcal.com). а>).
Файл отлично работает с MS Outlook 2010 и Google Calendar, но не с IOS. К сожалению, мне не удалось найти аналогичную проблему на форумах Apple. Я также не могу протестировать iDevice с предыдущей версией ОС или другим смартфоном в то время.
Я протестировал файл на онлайн-валидаторах iCalendar, таких как http://icalvalid.cloudapp.net/ и http://severinghaus.org/projects/icv/ — отличные результаты без предупреждений/ошибок.
Код календаря, сгенерированный из PHP
<?php
//set correct content-type-header
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=mycal_stack_example.ics');
?>
BEGIN:VCALENDAR<?echo "\r\n";?>
VERSION:2.0<?echo "\r\n";?>
METHOD:PUBLISH<?echo "\r\n";?>
CALSCALE:GREGORIAN<?echo "\r\n";?>
PRODID:-//Elite Systemer//Ver 1.6//NO<?echo "\r\n";?>
BEGIN:VTIMEZONE<?echo "\r\n";?>
TZID:Europe/Oslo<?echo "\r\n";?>
BEGIN:DAYLIGHT<?echo "\r\n";?>
DTSTART:19810329T020000<?echo "\r\n";?>
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<?echo "\r\n";?>
TZNAME:CEST<?echo "\r\n";?>
TZOFFSETFROM:+0100<?echo "\r\n";?>
TZOFFSETTO:+0200<?echo "\r\n";?>
END:DAYLIGHT<?echo "\r\n";?>
BEGIN:STANDARD<?echo "\r\n";?>
DTSTART:19961027T030000<?echo "\r\n";?>
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<?echo "\r\n";?>
TZNAME:CET<?echo "\r\n";?>
TZOFFSETFROM:+0200<?echo "\r\n";?>
TZOFFSETTO:+0100<?echo "\r\n";?>
END:STANDARD<?echo "\r\n";?>
END:VTIMEZONE<?echo "\r\n";?>
BEGIN:VEVENT<?echo "\r\n";?>
UID:[email protected]<?echo "\r\n";?>
DTSTART;TZID=Europe/Oslo:20141107T140000<?echo "\r\n";?>
DURATION:PT60M<?echo "\r\n";?>
RRULE:WKST=MO;FREQ=WEEKLY;INTERVAL=1;BYDAY=FR;UNTIL=20141128T150000<?echo "\r\n";?>
SUMMARY;LANGUAGE=no:Friday<?echo "\r\n";?>
DESCRIPTION;LANGUAGE=no:Oppgave: Friday\n<?echo "\r\n";?>
LOCATION;LANGUAGE=no:Timenesveien 33<?echo "\r\n";?>
BEGIN:VALARM<?echo "\r\n";?>
TRIGGER:-PT15M<?echo "\r\n";?>
ACTION:DISPLAY<?echo "\r\n";?>
DESCRIPTION:Reminder<?echo "\r\n";?>
END:VALARM<?echo "\r\n";?>
END:VEVENT<?echo "\r\n";?>
END:VCALENDAR