在我们的服务器上,我们已经实现了为我们的活动获取动态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”这一事实会丢掉一些东西吗?如果是这样,我想我们可以实施重写规则来解决这个问题......
答案 0 :(得分:2)
在尝试了一些之后,不太确定是否有一种可靠的方法可以让它在多个平台上运行。对于像iPhone和iPad这样的东西,它们需要一个“webcal://”链接才能通过Apple的日历应用程序进行订阅。有些浏览器可以使用这种格式,其他浏览器则没有那么多。
这实际上涉及创建一个界面,允许人们为他们的设备选择正确的下载,或者使用服务器端请求中的User-Agent以适当的格式为给定的设备/浏览器定位链接。