如何让iCalendar订阅在多个浏览器/操作系统之间工作



在我们的服务器上,我们实现了一种获取活动的动态iCalendar提要的方法。这是通过首先调用Coldfusion脚本来处理的,该脚本渲染iCalendar文件,并在将内容类型设置为"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"这一事实引发了一些问题吗?如果是这样的话,我想我们可以实现重写规则来解决这个问题。。。

在尝试了更多之后,不太确定是否有一种可靠的方法可以让它在多个平台上运行。似乎对于iPhone和iPad这样的产品,它们需要一个"webcal://"链接才能通过苹果的日历应用程序订阅。一些浏览器可以接受这种格式,而另一些则不然。

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

相关内容

最新更新