我有一个网络应用程序,当用户提交表单时,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主屏幕,并从那里和浏览器进行检查。
答案 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示例,可以在那里测试不同的选项。