PWA

  • manifest 在一个JSON文本文件中提供有关应用程序的信息(如名称,作者,图标和描述)
  • manifest 的目的是将Web应用程序安装到设备的主屏幕

部署一个 manifest

<link rel="manifest" href="/manifest.json">

manifest 范例

{
  "name": "HackerWeb",
  "short_name": "HackerWeb",
  "start_url": ".",
  "display": "standalone",
  "background_color": "#fff",
  "description": "A simply readable Hacker News app.",
  "icons": [{
    "src": "images/touch/homescreen48.png",
    "sizes": "48x48",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen72.png",
    "sizes": "72x72",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen96.png",
    "sizes": "96x96",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen144.png",
    "sizes": "144x144",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen168.png",
    "sizes": "168x168",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen192.png",
    "sizes": "192x192",
    "type": "image/png"
  }],
  "related_applications": [{
    "platform": "web"
  }, {
    "platform": "play",
    "url": "https://play.google.com/store/apps/details?id=cheeaun.hackerweb"
  }]
}

成员

background_color

  • 用于在样式表加载之前,当加载manifest,浏览器可以用来绘制web应用程序的背景颜色。在启动web应用程序和加载应用程序的内容之间创建了一个平滑的过渡。
  • 只是在web应用程序加载时提高用户体验,而当web应用程序的样式表可用时,不能替代作为背景颜色使用。

description

  • 提供有关Web应用程序的一般描述。

dir

  • 指定名称、短名称和描述成员的主文本方向。
    • ltr (由左到右)
    • rtl (由右到左)
    • auto (由浏览器自动判断。(默认值)
  • 与lang一起配置,可以帮助正确显示右到左文本。
"dir": "rtl",
"lang": "ar",
"short_name": "أنا من التطبيق!"

display

  • Web应用程序的首选显示模式"display": "standalone"(如果不支持将自动降级)
    • fullscreen 全屏显示, 所有可用的显示区域都被使用, 并且不显示状态栏chrome。
    • tandalone 让这个应用看起来像一个独立的应用程序,包括具有不同的窗口,在应用程序启动器中拥有自己的图标等。这个模式中,用户代理将移除用于控制导航的UI元素(前进后退按钮?),但是可以包括其他UI元素,例如状态栏。
    • minimal-ui 应用程序将看起来像一个独立的应用程序,但会有浏览器地址栏。 样式因浏览器而异。
    • browser 该应用程序在传统的浏览器标签或新窗口中打开,具体实现取决于浏览器和平台。 这是默认的设置。
  • 显示模式可以在CSS媒体查询中使用@media all and (display-mode: fullscreen) { ... }

icons

  • 指定可在各种环境中用作应用程序图标的图像对象数组。
    • 用来在其他应用程序列表中表示Web应用程序
    • 将Web应用程序与OS(操作系统)的任务切换器和/或系统偏好集成在一起。
  • 图像对象可能包含以下值:
    • sizes 包含空格分隔的图像尺寸的字符串。
    • src 图像文件的路径。 如果src是一个相对URL,则基本URL将是manifest的URL。
    • type 提示图像的媒体类型。此字段的目的是允许用户代理(浏览器)快速忽略不支持的媒体类型的图像。
"icons": [
  {
    "src": "icon/lowres.webp",
    "sizes": "48x48",
    "type": "image/webp"
  },
  {
    "src": "icon/lowres",
    "sizes": "48x48"
  },
  {
    "src": "icon/hd_hi.ico",
    "sizes": "72x72 96x96 128x128 256x256"
  },
  {
    "src": "icon/hd_hi.svg",
    "sizes": "72x72"
  }
]

lang

  • 指定name和short_name成员中的值的主要语言。 该值是包含单个语言标记的字符串。
"lang": "en-US"

name

  • 为应用程序提供一个人类可读的名称,例如在其他应用程序的列表中或作为图标的标签显示给用户。

short_name

  • 应用程序提供简短易读的名称。 这是为了在没有足够空间显示Web应用程序的全名时使用。

orientation

  • 程序的默认方向(旋转)​​"orientation": "portrait-primary"
  • 方向可以是以下值之一:
    • any
    • natural
    • landscape
    • landscape-primary
    • landscape-secondary
    • portrait
    • portrait-primary
    • portrait-secondary
  • 指定一个布尔值,提示用户代理向用户指示指定的相关应用程序(请参见下文)可用,并建议通过Web应用程序。 只有当相关的本地应用程序确实提供了某些Web应用程序无法做到的事情时,才应该使用它。(是否出现应用程序提示,该提示可以提供一个入口,用来下载安装一个应用来代替该PWA所拥有的功能?)
  • 如果省略,默认设置为 false."prefer_related_applications": false
  • 指定一个“应用程序对象”数组,代表可由底层平台安装或可访问的本机应用程序 - 例如可通过Google Play Store获取的原生Android应用程序。
  • 这样的应用程序旨在替代提供类似或等同功能的Web应用程序 - 就像Web应用程序的本机应用程序版本一样。
  • 应用程序对象可能包含以下值:
    • platform 可以找到应用程序的平台。
    • url 可以找到应用程序的URL。
    • id 用于表示指定平台上的应用程序的ID。
"related_applications": [
  {
    "platform": "play",
    "url": "https://play.google.com/store/apps/details?id=com.example.app1",
    "id": "com.example.app1"
  }, {
    "platform": "itunes",
    "url": "https://itunes.apple.com/app/example-app1/id123456789"
  }]

scope

  • 定义此Web应用程序的应用程序上下文的导航范围。 这基本上限制了manifest可以查看的网页。 如果用户在范围之外浏览应用程序,则返回到正常的网页。(manifest配置的影响范围?)
  • 如果scope是相对URL,则基本URL将是manifest的URL。
"scope": "/myapp/"

start_url

  • 指定用户从设备启动应用程序时加载的URL。 如果以相对URL的形式给出,则基本URL将是manifest的URL。
"start_url": "./?utm_source=web_app_manifest"

theme_color

  • 定义应用程序的默认主题颜色。 这有时会影响操作系统显示应用程序的方式(例如,在Android的任务切换器上,主题颜色包围应用程序)。
"theme_color": "aliceblue"

初始屏幕

  • 在Chrome 47及更高版本中,从主屏幕启动的Web应用程序将显示启动画面。 这个启动画面是使用Web应用程序清单中的属性自动生成的,具体来说就是:name,background_color以及icons 中距设备最近128dpi的图标。

Mime类型

  • Manifests 应使用 application/manifest+json MIME 类型. 但是, 你不必非得这样做.
原文地址:https://www.cnblogs.com/qq3279338858/p/11041264.html