簡単な紹介
PHP で生成された iCalendar ファイルの定期的なイベントが、IOS アプリケーションで正しく繰り返されません。Outlook 2010 と Google カレンダーでは正しく繰り返されますが、IOS 8.1 (iPhone 5S と iPad 2) ではそうではありません。
詳細
次のファイルは、MS Outlook や Google カレンダーなどのアプリケーションからの購読に適したカレンダー ファイルを生成します。このファイルには、VTIMEZONE と 1 つの VEVENT が含まれており、2014 年 11 月 7 日から 28 日までの毎週金曜日に合計 4 回繰り返されます。
iCalendar ファイル: http://www.elitesystemer.no/mycal_stack_example.php (以下の完全なコード)
両方の iDevice (IOS 8.1) で、このイベントは 1 回だけ発生します。7. 2014 年 11 月。この奇妙な動作は、ネイティブ カレンダー アプリと週カレンダー アプリ (サイト: http://weekcal.com ) に当てはまります。
このファイルは、MS Outlook 2010 および Google カレンダーでは完全に機能しますが、IOS では機能しません。残念ながら、Apple フォーラムで同等の問題を見つけることができませんでした。以前の OS バージョンの iDevice でテストすることも、別のスマートフォンでテストすることもできません。
http://icalvalid.cloudapp.net/やhttp://severinghaus.org/projects/icv/などのオンライン iCalendar バリデーターでファイルをテストしました- 警告やエラーのない完璧な結果。
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