要怎麽知道 Web App 是在 PWA 已经被安装情况下被开启的,靠 CSS 中有个 display-mode
,不管透过 tab 或是安装的情况下,去测试都可以看得出来。
display-mode
搭配 matchMedia()
navigator.standalone
: 不支援 matchMedia()
就透过属性直接判断function getPWADisplayMode() {
const isStandalone = window.matchMedia("(display-mode: standalone)").matches;
if (document.referrer.startsWith("android-app://")) {
return "twa";
} else if (navigator.standalone || isStandalone) {
return "standalone";
}
return "browser";
}
也是透过 matchMedia()
搭配 change
的事件,但还想不到什麽情境底下会发生。
window
.matchMedia("(display-mode: standalone)")
.addEventListener("change", (evt) => {
let displayMode = "browser";
if (evt.matches) {
displayMode = "standalone";
}
// Log display mode change to analytics
console.log("DISPLAY_MODE_CHANGED", displayMode);
});
最简单就是透过 CSS 的 media query 条件设定:
@media all and (display-mode: standalone) {
body {
background-color: yellow;
}
}
当想要更新 App 的名称或是 Icon 的时候,其实也是透过修改 manifest 配置档。
以下属性改变的时候,Chrome 会自动抓取新的 manifest 配置档, Chrome 会把新的配置暂存,等到所有视窗关闭时会进行更新安装。当安装完成时,除了 name, short_name, start_url, icons 以外的栏位都会更新。
哪几个栏位会触发更新?
测试 manifest 更新
about://internals/web-app
哪几个栏位会触发更新?
如果 Chrome 无法从服务器取得更新版的 manifest,会延长到 30 才进行更新确认。
测试 manifest 更新
about://webapks
: 点选 "Update" 按钮
先简单回顾一下,今天预计分析的题目: 如何利用两个 stack 完成 Queue 的概念? 逻辑很简...
今天的内容为计算击杀怪物数量。 ...
本篇详细介绍 LSTM 及如何以 LSTM 建模预测时间序列。 本日大纲 LSTM 介绍 LSTM ...
什麽是 Single Threaded Execution Pattern? 透过 lock,只会有...
arrary很别好理解,一维arrary就是线,二维arrary就是面,三维arrary就是立方体,...