允许在WebApp中以独立模式在iOS中共享文件

时间:2019-02-08 17:16:58

标签: ios web-applications progressive-web-apps manifest.json

我有一个WebApp,它可以在Android和iOS环境中正常运行。问题是,在其中一个屏幕中,WebApp会生成(并显示)PDF文件,该文件应该可以通过Email,WhatsApp,Telegram等共享。

Android 确实允许在独立显示模式下使用 share 选项,但 iOS 却不允许。我需要知道是否有什么方法可以在打开pdf文件时将WebApp模式真正退出到普通的旧浏览器模式,以便用户实际上可以通过以下方式与他/她的联系人共享该文件:浏览器的本机共享对话框。

这些是manifest.json文件的内容

{
    "name": "Test App",
    "short_name": "TestApp",
    "icons": [
        {
            "src": "/icon-192x192.png",
            "sizes": "192x192",
            "type": "image/png"
        },
        {
            "src": "/icon-512x512.png",
            "sizes": "512x512",
            "type": "image/png"
        }
    ],
    "start_url": "https://example.com?a2hs=1",
    "scope": "/",
    "display": "standalone",
    "orientation": "portrait",
    "background_color": "#000000",
    "theme_color": "#000000"
}

到目前为止,我已经尝试过:

  1. 使用pdf链接中的<a href="test.pdf" target="_blank">Display PDF</a>

  2. 使用javascript强制打开新窗口:

<a href="test.pdf" id="pdf">test</a>
<script>
$(function(){
    $('#pdf').click(function(e){
        e.preventDefault();
        window.open($(this).attr('href'), '_blank');
        return false;
    });
});
</script>

这些解决方案都没有解决。

此外,我尝试将display:文件中的manifest.json属性更改为minimal-ui-允许共享文件/ URL,但删除了WebApp的外观,因此不是一个选择。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方案。我创建了这个别名子域:

pdf.example.com

然后,我将pdf链接到别名子域:

<a href="https://pdf.example.com/test.pdf">Display PDF</a>

iOS将其识别为另一台服务器,因此它会自动在Safari的新标签中强制加载文件,退出Web应用程序的当前独立模式。