我面對有關創建以來,已經可與一些客戶,尤其是iOS
,Gmail
,Outlook
,Android
和Windows Phone
兼容ICS文件的幾個問題。谷歌搜索,我發現了2009年的建議標準,又名RFC5546。我通讀了這篇文檔,發現了一個非常有趣並且可能解決我的問題的觀點。部分Methods for VEVENT Calendar Components解釋了方法REQUEST和PUBLISH之間的區別。但是,有幾點我並不清楚:的iCalendar創建:RFC 5546的解釋
- PUBLISH應該做什麼?它應該添加一個新的日曆嗎?它應該創建一個新的日曆(比如在Outlook或iOS中),還是應該在現有的用戶日曆中添加事件(如在Gmail或Lightning中)? 編輯:將日曆記錄爲附加到電子郵件的文件。
- Can PUBLISH可以包含多個事件嗎?從文檔和邏輯上來看,是的,但是Gmail只添加了列表中的第一個事件。閃電只添加一個事件,然後發出804a0004錯誤。
- REQUEST應該如何工作?該文件指出:
VEVENT | 1+ | All components MUST have the same UID.
這意味着日曆可能有超過1個VEVENT,但它們必須具有相同的UID。那麼,我該如何區分這些事件呢?事實上,我嘗試過的客戶端無法區分使用相同UID生成的事件,但它們只添加了具有最高SEQUENCE的事件。從邏輯上講,我不想每個邀請發送一個以上的事件,但RFC允許我這樣做(並且在我的案例研究中,我想),那麼如何? - 通過REQUEST,忘記
VEVENT | 1+ | All components MUST have the same UID.
聲明,爲ICS文件中的每個事件提供唯一的UID,Gmail和iOS添加文件中包含的所有事件,而Lightning和Outlook只添加第一個事件。有沒有辦法追求這條道路,或者因爲它不應該被允許我應該找到另一種方式? - 基本上,您如何建議繼續在用戶的日曆中爲我提到的平臺添加更多帶有單個ICS文件的事件?
樣品ICS的發佈:
BEGIN:VCALENDAR
PRODID:-//prodid//product//IT
VERSION:2.0
METHOD:PUBLISH
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:uid1
DTSTAMP:20130515T121437Z
DTSTART:20130619T205000
DTEND:20130619T215000
DESCRIPTION:Desc 1
SUMMARY:Sum 1
LOCATION:location
ORGANIZER:mailto:[email protected]
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
BEGIN:VEVENT
UID:uid2
DTSTAMP:20130515T121437Z
DTSTART:20130719T205000
DTEND:20130719T215000
DESCRIPTION:Desc 2
SUMMARY:Sum 2
LOCATION:location
ORGANIZER:mailto:[email protected]
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
樣品的請求:
BEGIN:VCALENDAR
PRODID:-//prodid//product//IT
VERSION:2.0
METHOD:REQUEST
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:uid1
DTSTAMP:20130515T121437Z
DTSTART:20130619T205000
DTEND:20130619T215000
DESCRIPTION:Desc 1
SUMMARY:Sum 1
LOCATION:location
ORGANIZER:mailto:[email protected]
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:[email protected]
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
BEGIN:VEVENT
UID:uid2
DTSTAMP:20130515T121437Z
DTSTART:20130719T205000
DTEND:20130719T215000
DESCRIPTION:Desc 2
SUMMARY:Sum 2
LOCATION:location
ORGANIZER:mailto:[email protected]
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:[email protected]
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
我更新的第1點的問題)的最後一個事件,反正我送通過郵件日曆,無論是作爲附件或嵌入主體並不重要。關於第2點),這是否意味着像Google日曆或閃電這樣的客戶是有缺陷的或不完整的?那麼顯然沒有辦法發送單個文件爲幾個客戶端工作,我說得對嗎? – ThanksForAllTheFish
你是對的,他們不正確。我懷疑他們以與REQUEST相同的方式處理PUBLISH,因此只允許一個事件(可選地帶有VEVENT異常),但從4)開始,它看起來像gmail正在做與它應該做的事情完全相反的事情。 – arnaudq
我錯了4.我終於採取了一種更科學的方法,並且正在準備一份描述一些事件,客戶端,UID和方法組合的行爲的文檔。 Google日曆僅添加第一個活動。 – ThanksForAllTheFish