2010-01-28 18 views
7

Sto costruendo una webapp che gestisce determinati tipi di eventi per gli utenti. Voglio fornire un modo per visualizzare quegli eventi all'interno del calendario di Google dell'utente.Come pubblicare un feed evento dinamico per il calendario di Google?

Quello che speravo davvero era un modo per pubblicare il mio feed compatibile con Google Calendar e consentire agli utenti di iscriversi ad esso, così come possono iscriversi a "calendari interessanti". In questo modo, se gli eventi cambiano o vengono aggiunti nuovi eventi, questi si riflettono nel loro calendario. Ma sembra che solo Google consenta agli utenti di importare i dati del calendario in formati ical o csv, non nel formato di feed atom.

Il problema è che gli eventi esistenti nella mia webapp possono cambiare e vengono aggiunti nuovi eventi. Voglio che tali modifiche si riflettano immediatamente nel calendario di Google. E non posso aspettarmi che un utente continui a reimportare un file ICAL. La seguente domanda SO è estremamente simile, ma in realtà non ha una risposta pubblicata: Generate a Google Calendar compatible feed

Sto andando su questo nel modo sbagliato? Devo utilizzare l'API gdata per creare un calendario e pubblicare eventi su di esso? Sembra che pubblicare un feed atomico sarebbe molto più semplice, ma se google non può iscriversi a un feed atomico, non funzionerà.

Se pubblico semplicemente i miei eventi come file ICAL, Google Calendar rileggerà regolarmente l'URL e aggiornerà i dati? Alcuni utenti hanno 4 o 5 eventi al giorno, quindi il file diventerà sempre più grande col passare del tempo. Sembra davvero che questa non sia una buona soluzione.

risposta

6

Guardando ad altri siti che lo fanno, sembrerebbe che Google rileggi regolarmente i calendari esterni in formato ical.

Spetta quindi a te tagliare il feed ical che fornisci, ad esempio, eliminando le date nel passato.

Quindi, per risolvere il problema:

  • generare un file iCal e servire dal tuo sito web
  • ottenere i vostri utenti di iscriversi ad esso in Google Calendar
  • aggiornare regolarmente il file iCal, taglio vecchio dati

Esempio intestazioni & inizio del file ICS da TripIt.com, dove questo sembra funzionare bene:

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

Grazie, ma secondo questo post, Google non aggiorna in modo affidabile da un URL: http://www.google.com/support/forum/p/Calendar/thread?tid=3fad85f47a70864b&hl=en Do hai esempi di siti che pubblicano in formato ical che funzionano in modo affidabile? – Tauren

+1

Ho appena provato con TripIt - ho ottenuto il collegamento webcal: // (in un file ics), l'ho aggiunto a Google. Poi ha aggiunto un altro evento su tripit.com, è tornato su google e è stato immediatamente mostrato. –

+0

Grazie Malcolm! Questo sembra molto promettente. Speravo solo di fornire un feed ics per supportare calendari, iphone, ical, outlook e così via. Se lavora per tripit, allora dovrei essere in grado di farlo funzionare anche. – Tauren

0

Sembra di aggiornare in modo affidabile il calendario di Google è necessario utilizzare l'API: http://code.google.com/apis/calendar/data/2.0/developers_guide.html anche se scommetto che da un punto di vista pragmatico, se si dispone di un file iCal che aggiorna ragionevolmente spesso, si ottengono prestazioni decenti .

+0

Aerik, sono d'accordo: usare l'API gdata è probabilmente il modo più affidabile. Ma non sarà di aiuto con iPhone, iCal, Outlook e altri utenti. Alla fine potrei finire con gdata, ma se un feed ics può essere utilizzato in modo affidabile in google, lo proverò prima. – Tauren

2

Gli utenti iCal, come minimo, possono iscriversi direttamente al file ics. Trovo che iCal mostri i miei aggiornamenti entro 20 minuti o giù di lì, e anche quel ritardo credo sia dovuto al fatto che il calendario che sto usando (JEvents) aggiorna il file ics ogni tanto.

Google Calendar sta impiegando ore per mostrare le mie modifiche - anche se annullo l'iscrizione e creo un nuovo abbonamento allo stesso URL, vedo eventi che sono stati cancellati molto tempo fa.

Problemi correlati