2010-01-28 11 views
7

Buduję aplikację webową, która zarządza określonymi rodzajami zdarzeń dla użytkowników. Chcę udostępnić sposób wyświetlania tych zdarzeń w kalendarzu google użytkownika.Jak opublikować dynamiczny kanał zdarzeń dla kalendarza google?

Naprawdę liczyłem na to, że będę mógł opublikować własny kanał kompatybilny z kalendarzem google i zezwolić użytkownikom na subskrybowanie go, tak jak mogą subskrybować "ciekawe kalendarze". Tak więc, jeśli wydarzenia się zmieniają lub dodawane są nowe wydarzenia, są one odzwierciedlane w ich kalendarzu. Wygląda jednak na to, że Google pozwala tylko użytkownikom importować dane kalendarza w formatach ical lub csv, a nie w formacie kanału atomowego.

Problem polega na tym, że istniejące wydarzenia w mojej aplikacji internetowej mogą się zmieniać i dodawane są nowe wydarzenia. Chcę, aby te zmiany zostały natychmiast odzwierciedlone w kalendarzu Google. I nie mogę oczekiwać, że użytkownik będzie ponownie importować plik ICAL. Poniższe pytanie dotyczące SO jest bardzo podobne, ale tak naprawdę nie ma odpowiedzi na wysłane: Generate a Google Calendar compatible feed

Czy podążam w tym kierunku w niewłaściwy sposób? Czy muszę używać interfejsu API gdata do tworzenia kalendarza i publikowania w nim wydarzeń? Wygląda na to, że publikowanie kanału atomowego byłoby znacznie prostsze, ale jeśli Google nie może zasubskrybować kanału atomowego, to nie zadziała.

Jeśli po prostu opublikuję moje wydarzenia jako plik ICAL, czy kalendarz google będzie regularnie czytał ponownie adres URL i aktualizował dane? Niektórzy użytkownicy mają 4 lub 5 wydarzeń każdego dnia, więc z czasem plik będzie coraz większy. Wygląda na to, że to nie jest dobre rozwiązanie.

Odpowiedz

6

Patrząc na inne strony, które to robią, wydaje się, że Google regularnie odczytywa zewnętrzne kalendarze w formacie ical.

Od Ciebie zależy, czy zmniejszysz liczbę dostarczanych przez Ciebie kanałów, na przykład o zabijanie dat w przeszłości.

Tak, aby rozwiązać swój problem:

  • wygenerować plik iCal i służyć z witryny internetowej
  • dostać użytkownikom zapisać się do niej w Kalendarzu Google
  • regularnie odświeżać plik iCal, przycinanie stare dane

Przykład nagłówki & początek pliku iCS z TripIt.com, gdzie wydaje się to dobrze działać:

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 
... 
+0

Dzięki, ale zgodnie z tym poście, Google nie niezawodnie aktualizację z adresem URL: http://www.google.com/support/forum/p/Calendar/thread?tid=3fad85f47a70864b&hl=en Do masz przykłady witryn, które publikują w formacie ical, które działają niezawodnie? – Tauren

+1

Właśnie wypróbowałem to z TripIt - otrzymałem link: webcal: // (do pliku ics), dodałem go do Google. Następnie dodano kolejne wydarzenie na tripit.com, wróciłem do google i zostało ono natychmiast pokazane. –

+0

Dzięki Malcolm! Wygląda to bardzo obiecująco. Miałem nadzieję, że będę musiał tylko podać plik źródłowy do obsługi kalendarzy google, iphone, ical, Outlook i tak dalej. Jeśli pracuje dla tripita, to powinienem też móc go uruchomić. – Tauren

0

Wygląda wiarygodnie aktualizować kalendarz google trzeba użyć API: http://code.google.com/apis/calendar/data/2.0/developers_guide.html chociaż założę z pragmatycznego punktu widzenia, jeśli masz plik iCal, który aktualizuje dość często, dostaniesz przyzwoitą wydajność .

+0

Aerik, zgadzam się - używanie API gdata jest prawdopodobnie najbardziej niezawodnym sposobem. Ale nie pomoże to iPhone'owi, iCalowi, Outlookowi i innym użytkownikom. Być może ostatecznie skończę z gdatą, ale jeśli plik z informacjami o wirusach może być niezawodnie używany w Google, spróbuję go najpierw. – Tauren

2

Użytkownicy iCal mogą przynajmniej subskrybować bezpośrednio do pliku ics. Uważam, że iCal pokazuje moje aktualizacje w ciągu około 20 minut, a nawet to opóźnienie, które zgaduję, jest spowodowane tym, że kalendarz, którego używam (JEvents), aktualizuje plik tak często.

Kalendarz Google zajmuje wiele godzin, aby pokazać moje zmiany - nawet jeśli zrezygnuję z subskrypcji i utworzę nowy subskrypcję tego samego adresu URL, widzę wydarzenia, które zostały usunięte dawno temu.

Powiązane problemy