2012-08-30 35 views
1

在我們的服務器上,我們實施了一種方法爲我們的活動獲取動態iCalendar供稿。首先調用一個呈現iCalendar文件的Coldfusion腳本,並在設置「text/calendar; charset = UTF-8」的內容類型後返回該腳本。被調用的東西是這樣的:http://www.mysite.com/ical.cfm?calendar_id=1如何讓iCalendar訂閱在多個瀏覽器/操作系統之間工作?

但是,我們已經注意到這導致諸如移動設備等事物之間的問題。iPad不會「訂閱」這個,而是導入事件;這是不好的,因爲我們希望這些更新。其他瀏覽器只是簡單地提示下載ICS文件,這又會導致人們導入一個文件,而不是真正「訂閱」事件(我們也使用Content-Disposition頭文件來獲取文件名固定爲「.ics」下載爲「.cfm」)。

然後,我們嘗試在鏈接上使用「webcal://」而不是「http://」。這似乎解決了iPad的問題,然後Firefox會要求在另一個應用程序(我猜有人可以選擇他們的日曆應用程序)中打開鏈接。但是,現在Chrome不會做任何事情;我們點擊鏈接,它什麼都不做。 Webcal不是一個標準的「協議」,所以我可以在那裏存在問題。

現在,我打開Wireshark來檢查一個提供Google iCalendar文件的數據包(在任何瀏覽器和iPad中都可以正常連接),除此之外沒有什麼特別之處,除了一些緩存頭文件和自定義「X」頭文件,唯一需要注意的是內容類型被設置爲我們提供的內容。

所以,我想知道是否有人在使所有的瀏覽器和iPad/iPhone的工作方式都一致方面有一些指示。難道說鏈接調用「.cfm」而不是「.ics」的事實正在拋棄一些東西?如果是這樣,我想我們可以實施重新編寫規則來解決這個問題...

回答

2

經過對這一點進行了一些實驗後,並不太確定是否有一種可靠的方法來讓它在多個平臺上工作。對於像iPhone和iPad這樣的產品,它們似乎需要一個「webcal://」鏈接才能通過Apple的日曆應用進行訂閱。有些瀏覽器可以使用這種格式,其他瀏覽器則沒有這麼多。

這確實會涉及到創建一個接口,允許用戶爲他們的設備選擇適當的下載,或者使用服務器端的請求中的用戶代理來針對給定設備/瀏覽器的適當格式的鏈接。

相關問題