iCalendar: повторяющиеся события неправильно отображаются в IOS

Краткое введение

Повторяющиеся события в моем сгенерированном PHP файле iCalendar не повторяются правильно с приложениями IOS. Они правильно повторяются в Outlook 2010 и Google Calendar, но не в 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 г. Это странное поведение относится как к собственному календарному приложению, так и к приложению Calendar Week (сайт: 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:f8a81b8613113296503aa6fca2b61ce5@elitesystemer.no<?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

2 ответа

Решение

После дальнейшего тестирования это, кажется, работает, если я удаляю правило WKST.

WKST=MO

В конце концов, значением по умолчанию для WKST является MO.

Удивительно, но кажется, что ios просто не выполняет повторяющиеся события по дням недели - быстрый гугл нашел этот пост за январь 2014 года:

Возможность планировать повторяющиеся события по дням недели в iOS отсутствует.

http://www.macworld.com/article/2091041/scheduling-recurring-events-on-ios.html ссылка содержит несколько предложений. (и мне нравится последнее предложение абзаца!)

Я использую календарь Google на своем iphone, поэтому я не заметил этого раньше и мне трудно в это поверить, но, очевидно, это проблема.

Единственный способ обойти это - предложить канал ics для пользователей яблочного календаря, который генерирует RDATE для повторяющихся экземпляров, а не RRULE. Конечно, это должно загрузить те?

Другие вопросы по тегам