javascript - 动态设置 list 时的 PWA 安装提示

标签 javascript android progressive-web-apps manifest.json

我们有一个满足 PWA 标准的网络应用程序。至此,在安卓设备上打开应用时,我们收到了 PWA 安装提示。

现在,如果可能,我们想生成 manifest.json在客户端动态。我正在按照以下文章中概述的步骤进行操作,看起来很有希望:

How to Setup Your Web App Manifest Dynamically Using Javascript

我们生成 JSON 并通过客户端 JS 将其设置为 blob URL:

const stringManifest = JSON.stringify(manifest);
const blob = new Blob([stringManifest], { type: 'application/json' });
const manifestUrl = URL.createObjectURL(blob);
document.querySelector('#manifest-placeholder').setAttribute('href', manifestUrl);

但是现在,当我在 Android 设备上打开应用程序时,我不再看到 PWA 提示。然而, list 文件显然会被解释,例如iconstart_url当我尝试将应用程序添加到主屏幕时已正确设置。

这里有任何经验是否设置 manifest.json PWA 有可能吗?有什么我可能会丢失的吗?

最佳答案

我遇到了类似的问题。我得出的结论是,此问题可能是由于在将动态创建的 list 插入 DOM 之前浏览器检查了有效 list 。

如果浏览器认为没有可用的有效 list 可用于 PWA 安装,则不会显示安装提示,这在文档中已经说明得很清楚。然而,调试这个问题相当令人困惑,因为 Google Chrome 审计开发工具选项卡中的 Lighthouse 等工具会说该应用程序是可安装的,并且一切都很好而且花花公子......

可能是浏览器在页面加载期间只检查一次有效 list - 不幸的是,我在任何地方都找不到任何关于此的确切细节。

我能够通过确保 html 文档的初始渲染具有用于 PWA 安装的有效 list 来解决此问题,其中包含一些默认值(在我的情况下,这些值基于 window.location.pathname )。稍后,当我拥有所有可用的适当数据时,我可以创建所需的 list 并在 DOM 中替换它。然后,当准备好安装 PWA 时,浏览器会使用来自所需 list 的数据。

关于javascript - 动态设置 list 时的 PWA 安装提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806430/

相关文章:

java - SetError 图标与其他 edittext 图标重叠

javascript - 将 HTML 文件中的外部 javascript 文件从 Android Assets 文件夹加载到 WebView 中

android - 如何一次性否定 View 的颜色?

javascript - list : property 'start_url' ignored, 应与文档同源

angular - 'ea' 模板编译时出错

javascript - 添加 anchor 到 AngularJS State

javascript - 使用 JS 获取正确的占位符颜色

javascript - 将复杂属性数据加载到数组数组中时遇到问题

javascript - 如何从 asp :textbox? 调用 javascript 函数

html - PWA 与 html5 web 应用程序?