尝试访问主屏幕Web应用程序中的ics文件时,“无法下载此文件”

时间:2015-03-11 09:34:50

标签: javascript ios web-applications safari homescreen

我有一个网络应用程序,当用户提交表单时,iCalendar .ics文件在服务器端生成,并通过以下标题发送回客户端:

'Content-type': 'text/calendar; charset=utf-8',
'Content-Disposition': 'inline; filename=calendar.ics'

在Safari浏览器的iOS上执行此操作时,文件处理正确(事件已添加到日历中),但是当从主屏幕访问应用程序时,会显示Downloaded Failed This file cannot be downloaded.弹出窗口。

这个问题有什么解决方案吗? (Some people have been facing this as well.

编辑:简而言之,尝试使用window.location重定向打开base64编码的.ics文件时会发生同样的事情(如this answer中所述)。我还创建了一个JS Bin example,可以添加到iOS主屏幕,并从那里和浏览器进行检查。

1 个答案:

答案 0 :(得分:1)

所以,我终于找到了与iOS主屏幕应用和iCal文件生成联系的方式。我正在使用以下格式的链接:

<a href="/profile/events/5511a5e88cb9176a13ad9587/ical" target="_self">add to calendar</a>

导致带有.ics文件生成逻辑的服务器端路由。然后我发回带有以下标题的文件:

'Content-type': 'text/calendar; charset=utf-8',
'Content-Disposition': 'inline; filename=event.ics'

现在它有效!值得一提的是,将表格提交到同一路线并没有帮助。并注意锚点上的target="_self"属性,它对于主屏模式可能至关重要。

编辑:虽然该链接仍然通过浏览器打开,而不是主屏幕应用。 AFAIK,目前还没有解决方法。我还在问题中更新了JS Bin示例,可以在那里测试不同的选项。