2

在我们的服务器上,我们已经实现了一种为我们的活动获取动态 iCalendar 提要的方法。这是通过首先调用呈现 iCalendar 文件的 Coldfusion 脚本来处理的,并在将内容类型设置为“text/calendar; charset=UTF-8”后返回该脚本。被称为是这样的:http://www.mysite.com/ical.cfm?calendar_id=1

但是,我们注意到这会导致移动设备等设备之间出现问题。iPad 不会“订阅”它,而是导入事件;这不好,因为我们希望这些更新。其他浏览器只是提示下载 ICS 文件,这又会导致人们导入单个文件而不是真正“订阅”事件(我们还使用 Content-Disposition 标头将文件名固定为“.ics”下载为“.cfm”)。

然后我们尝试在链接上使用“webcal://”而不是“http://”。这似乎解决了 iPad 的问题,然后 Firefox 会要求在另一个应用程序中打开链接(我猜有人可以选择他们的日历应用程序)。但是,现在 Chrome 不会做任何事情;我们点击链接,它什么也不做。Webcal 不是标准的“协议”,所以我可能会遇到问题。

现在,我打开 Wireshark 来检查一个提供 Google iCalendar 文件的数据包(它在任何浏览器和 iPad 中都可以很好地链接),除了一些缓存头和自定义的“X”头之外,它并没有什么特别之处,唯一的需要注意的是内容类型被设置为我们提供的内容。

所以,我想知道是否有人有一些关于让它在所有浏览器和 iPad/iPhone 上同样工作的建议。难道是链接调用“.cfm”而不是“.ics”的事实正在抛出一些东西吗?如果是这样,我想我们可以实施重写规则来解决这个问题......

4

1 回答 1

2

在对此进行了更多试验之后,不太确定是否有一种可靠的方法可以让它在多个平台上工作。似乎对于 iPhone 和 iPad 之类的东西,它们需要一个“webcal://”链接才能通过 Apple 的日历应用程序订阅。一些浏览器可以接受这种格式,而其他浏览器则不然。

这实际上将涉及创建一个界面,允许人们为他们的设备选择正确的下载,或者使用服务器端请求中的用户代理来针对给定设备/浏览器以适当格式定位链接。

于 2012-11-02T14:51:09.027 回答