【问题标题】:'This file cannot be downloaded' when trying to access ics file in homescreen web app尝试在主屏幕网络应用程序中访问 ics 文件时“无法下载此文件”
【发布时间】:2015-05-13 00:31:05
【问题描述】:

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

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

在 iOS 上的 Safari 浏览器中执行此操作时,文件被正确处理(事件被添加到日历中),但是当从主屏幕访问应用程序时,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 主屏幕并从那里和浏览器进行检查。

【问题讨论】:

    标签: javascript ios web-applications safari homescreen


    【解决方案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 示例,可以在那里测试不同的选项。

    【讨论】:

    • 从用户的角度来看它是怎样的?您是否在日历中看到任何动画、新标签打开或提示添加事件?
    • 是的,它会打开浏览器片刻以重定向到日历应用程序。我将尝试阻止默认行为并将其替换为location.href 逻辑。稍后会检查。
    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2015-06-30
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多