ios - 允许在 Web 应用程序中以独立模式共享 iOS 中的文件

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

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

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

这些是 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. 使用 <a href="test.pdf" target="_blank">Display PDF</a>在 pdf 链接中。

  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:属性(property)在manifest.json文件至minimal-ui - 这确实允许共享文件/url,但会删除 WebApp 的外观和感觉,因此它不是一个选项。

有什么想法吗?谢谢!

最佳答案

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

pdf.example.com

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

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

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

关于ios - 允许在 Web 应用程序中以独立模式共享 iOS 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54597354/

相关文章:

iphone - 我们可以在应用程序中使用苹果相册图像吗?

php - 网络任务所需的语言

java - Web 应用程序工作流程中的 Controller Servlet

java - 如何在 Struts 2 中解析请求 URL?

reactjs - 如何在 React PWA 中将数据从 API 缓存到缓存存储?

ios - 在 iOS 上添加到主屏幕按钮显示 "app"而不是我的应用程序名称

iphone - PWA 可以访问联系人、GPS 或使用手机摄像头吗?

ios - 由一对多关系创建的访问器方法是否与 NSFetchedResultsControllers 一样好?

ios - 在 iOS UILabel 上设置 BOLD 字体

ios - UITableView 的属性可以是 UITableView Delegate 和 DataSource