Как опубликовать динамический канал событий для календаря Google? - PullRequest
9 голосов
/ 29 января 2010

Я создаю веб-приложение, которое управляет определенными типами событий для пользователей. Я хочу предоставить способ отображения этих событий в пользовательском календаре Google.

Я действительно надеялся на то, что смогу опубликовать свой собственный фид, совместимый с календарем Google, и позволить пользователям подписываться на него, как если бы они могли подписываться на «интересные календари». Таким образом, если события изменяются или добавляются новые события, они отражаются в их календаре. Но похоже, что Google позволяет пользователям импортировать данные календаря только в формате ical или csv, а не в формате атома.

Проблема в том, что существующие события в моем веб-приложении могут измениться, и новые события добавляются. Я хочу, чтобы эти изменения были немедленно отражены в календаре Google. И я не могу ожидать, что пользователь продолжит повторный импорт файла ICAL. Следующий вопрос очень похож, но на самом деле ответ не опубликован: Создание канала, совместимого с Календарем Google

Я поступаю неправильно? Нужно ли использовать API gdata для создания календаря и публикации в нем событий? Кажется, что опубликовать атомную ленту было бы намного проще, но если Google не может подписаться на атомную ленту, это не сработает.

Если я просто опубликую свои события в виде файла ICAL, будет ли календарь Google регулярно перечитывать URL-адрес и обновлять данные? У некоторых пользователей может быть 4 или 5 событий в день, поэтому файл будет увеличиваться с течением времени. Похоже, это не очень хорошее решение.

Ответы [ 3 ]

8 голосов
/ 29 января 2010

Глядя на другие сайты, которые делают это, кажется, что Google регулярно перечитывает внешние календари в обычном формате.

Затем вы должны урезать предоставляемый вами корм, например, убивая даты в прошлом.

Итак, чтобы решить вашу проблему:

  • сгенерируйте файл и отправьте его с вашего сайта
  • попросите пользователей подписаться на него в Календаре Google
  • регулярно обновляет файл ical, обрезая старые данные

Пример заголовков и запуска файла ics с TripIt.com, где это, кажется, работает хорошо:

curl -v http://..../tripit.ics

< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 29 Jan 2010 21:53:58 GMT
< Content-Type: text/calendar; charset=utf-8
< Transfer-Encoding: chunked
< Connection: close
< Expires: Fri, 29 Jan 2010 22:08:58 GMT
< Cache-Control: private
< 
BEGIN:VCALENDAR
X-WR-CALNAME:Malcolm Box (TripIt)
X-WR-CALDESC:TripIt Calendar
X-PUBLISHED-TTL:PT15M
PRODID:-//John Papaioannou/NONSGML Bennu 0.1//EN
VERSION:2.0
BEGIN:VEVENT
...
3 голосов
/ 26 октября 2012

Пользователи iCal, по крайней мере, могут подписаться непосредственно на файл ics. Я обнаружил, что iCal показывает мои обновления в течение 20 минут или около того, и даже эта задержка, которую я предполагаю, заключается в том, что используемый мной календарь (JEvents) обновляет файл ics очень часто.

Календарю Google требуются часы, чтобы показать мои изменения - даже если я отписался и создал новую подписку на тот же URL, я вижу события, которые были удалены очень давно.

0 голосов
/ 30 января 2010

Похоже, что для надежного обновления календаря Google вы должны использовать API: http://code.google.com/apis/calendar/data/2.0/developers_guide.html, хотя я бы поспорил с прагматической точки зрения, если у вас есть файл, который обновляется достаточно часто, вы получите достойная производительность.

...