2014-11-11 4 views
0

Краткого введениеАнонсы: Повторяющиеся события не отображаются правильно в IOS

Повторяющиеся события в моем PHP сгенерированного файла Анонсы не правильно повторялись с приложениями IOS. Они действительно повторяются в Outlook 2010 и Календаре Google, но не в IOS 8.1 (iPhone 5S и iPad 2).

Деталь

следующий файл генерирует файл календарь, пригодный для подписки из приложений, таких как MS Outlook и Google Calendar. Файл содержит VTIMEZONE и один VEVENT, предназначенный для повторения каждой пятницы с 7 по 28. ноябрь 2014 года, всего четыре повторения.

файл Анонсы: http://www.elitesystemer.no/mycal_stack_example.php (полный код ниже)

В обеих моем мобильном iУстройстве (IOS 8.1) это событие происходит только один раз; 7. ноябрь 2014. Это странное поведение распространяется на собственное приложение календаря, а также на приложение «Календарь недели» (сайт: 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 

ответ

0

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

WKST=MO 

В конце концов, значение по умолчанию WKST равно МО.

+0

Значение по умолчанию зависит от вашей даты начала. – mc0e

0

Mindblowing но мне кажется, что ИОС просто не делает повторяющиеся события по дням недели - быстрый Google нашел Jan 2014 пост:

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

http://www.macworld.com/article/2091041/scheduling-recurring-events-on-ios.html Ссылка содержит некоторые предложения по этому вопросу. (и мне нравится последнее предложение параграфа!)

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

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

+0

Я не думаю, что 'RDATE' обычно поддерживается либо .. но не уверен в iOS. – Evert

+0

еще один пример ограниченной реализации rfc5545! – oberron

+0

IOS _is_ способен повторять события из подписанных календарей. Я установил простую подписку на Календарь Google с тем же повторяющимся событием, и он работал безупречно.Поэтому я думаю, что в моем коде iCal может быть ошибка, или, конечно, IOS может не следовать правилу. –