Я хочу создать в своем приложении календарь, который смогут просматривать внешние пользователи.
Формат CalDAV (в основном WebDAV+iCalendar), по-видимому, относительно широко поддерживается, хотя и довольно необычно некоторыми клиентами (например, Outlook). Хотя совершенно новое для меня.
Я хочу публиковать события извне, мне не нужно, чтобы пользователи могли их обновлять.
Текстовый формат событий в файлах .ics кажется относительно простым:
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART:20091130T000000Z
DTEND:20091201T000000Z
SUMMARY:Test event for calendar format
LOCATION:Company site
DESCRIPTION:Test event.\nMore text on a new line
END:VEVENT
END:VCALENDAR
Однако я действительно не хочу писать свой собственный конструктор файлов ics. Имена ключей, начинающиеся в каждой строке, кажутся не очень согласованными между файлами ics.
Есть ли реализация .Net? В идеале я не хочу настраивать всю реализацию WebDAV — только возможность получать календарь только для чтения.
В основном я хочу, чтобы это было по URL-адресу, который пользователи могут синхронизировать с телефонами iPhone, Android и Blackberry. Я знаю, что они могут обрабатывать услуги CalDAV от некоторых поставщиков, но не от других (например, мой iPhone может синхронизироваться с календарем Google, но не работает с событиями FaceBook) - кто-нибудь знает, почему?
Я думаю, что события также могут содержать вложения MIME - достаточно ли это поддерживается, чтобы на него тоже стоило обратить внимание?
Обновить
Дальнейшие исследования выявили некоторые странные несоответствия в большинстве реализаций. Ни одна из основных операционных систем мобильных клиентов (iPhone, Blackberry, Android) не поддерживает файлы .ics.
Однако iPhone может открывать .ics из URL-адреса (выберите подписку на календарь), и это также работает с FaceBook. Однако Blackberry и Android не могут. Я думаю, что Blackberry может работать с полной опцией CalDAV (а не только с файлом .ics), но я мало что знаю о программировании для него.
Есть ли последовательный способ сделать это там?