IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    对于 PWA 应用的 manifest.json 文件的解释

    冷石发表于 2022-08-29 09:01:22
    love 0

    网站要支持 PWA,需要一个 manifest.json 文件,W3C Web App Manifest 的草案上定义了以下的字段,解释一下每个字段是什么意思。

    网站要支持 PWA,需要一个 manifest.json 文件,W3C Web App Manifest 的草案上定义了以下的字段,解释一下每个字段是什么意思。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    dictionary WebAppManifest {
    TextDirectionType dir = "auto";
    DOMString lang;
    USVString name;
    USVString short_name;
    USVString description;
    sequence<ImageResource> icons;
    sequence<ImageResource> screenshots;
    sequence<USVString> categories;
    DOMString iarc_rating_id;
    USVString start_url;
    DisplayModeType display = "browser";
    OrientationLockType orientation;
    USVString theme_color;
    USVString background_color;
    USVString scope;
    ServiceWorkerRegistrationObject serviceworker;
    sequence<ExternalApplicationResource> related_applications;
    boolean prefer_related_applications = "false";
    };

    dictionary ImageResource {
    required USVString src;
    DOMString sizes;
    USVString type;
    USVString purpose;
    USVString platform;
    };

    dictionary ServiceWorkerRegistrationObject {
    required USVString src;
    USVString scope;
    WorkerType type = "classic";
    ServiceWorkerUpdateViaCache update_via_cache = "imports";
    };

    dictionary ExternalApplicationResource {
    required USVString platform;
    USVString url;
    DOMString id;
    USVString min_version;
    sequence<Fingerprint> fingerprints;
    };

    dir 指定了 manifest 中具有方向性的成员的基本方向,可以设置 ltr 左至右, rtl 右至左, auto 没有明确方向。

    lang 指定 manifest 中具有方向性成员的值的主要语言(因为知道语言也可以帮助方向性)。

    name 表示应用的名称。

    short_name 表示 Web 应用程序名称的简短版本,用于没有足够空间来显示 Web 应用程序的全名的地方。

    description 描述 Web 应用程序的目的。

    scope 表示 Web 应用程序导航范围。

    icons icons 是 ImageResources 的数组,可以在各种情况下充当 Web 应用程序的图标表示。例如,它们可用于在其他应用程序列表中表示 Web 应用程序,或者将 Web 应用程序与 OS 的任务切换器和/或系统首选项集成。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "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": "257x257"
    }
    ]
    }

    display 其值是 DisplayModeType 值之一,表示开发人员对 Web 应用程序的首选显示模式。可以设置

    • “fullscreen” 占用整个可用的显示区域;
    • “standalone” 使其外观和感觉就像一个独立的本机应用程序;
    • “minimal-ui” 类似于 standalone 模式,但为最终用户提供了一些方法来访问用于控制导航的最小 UI 元素集(即,后退,前进,重新加载以及可能以某种方式查看文档的地址);
    • “browser” 使用特定于平台的约定打开 Web 应用程序,以在用户代理中打开超链接(例如,在浏览器选项卡或新窗口中);

    orientation Web 应用程序的所有顶级浏览上下文的默认方向。

    start_url 表示起始 URL 的字符串,该 URL 是用户启动 Web 应用程序时开发人员更喜欢用户代理加载的 URL(例如,当用户从设备的应用程序菜单中单击 Web 应用程序的图标时或主屏幕)。

    serviceworker 表示应用中 serviceWorker 的信息。

    1
    2
    3
    4
    5
    "serviceworker": {
    "src": "sw.js",
    "scope": "/foo",
    "update_via_cache": "none"
    }

    theme_color 应用程序上下文的默认主题颜色。

    related_applications 是底层应用程序平台可访问的应用程序。

    prefer_related_applications 表示相关应用程序是否应优先于当前的 Web 应用程序。

    background_color Web 应用程序的预期背景颜色。

    categories Web 应用程序所属的预期应用程序类别。

    screenshots 一个 ImageResources 数组,表示常见使用场景中的 Web 应用程序的截图。

    iarc_rating_id 用于确定 Web 应用程序适合的年龄。

    一个完整的示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    {
    "lang": "en",
    "dir": "ltr",
    "name": "Super Racer 3000",
    "description": "The ultimate futuristic racing game from the future!",
    "short_name": "Racer3K",
    "icons": [
    {
    "src": "icon/lowres.webp",
    "sizes": "64x64",
    "type": "image/webp"
    },
    {
    "src": "icon/lowres.png",
    "sizes": "64x64"
    },
    {
    "src": "icon/hd_hi",
    "sizes": "128x128"
    }
    ],
    "scope": "/racer/",
    "start_url": "/racer/start.html",
    "display": "fullscreen",
    "orientation": "landscape",
    "theme_color": "aliceblue",
    "background_color": "red",
    "serviceworker": {
    "src": "sw.js",
    "scope": "/racer/",
    "update_via_cache": "none"
    },
    "screenshots": [
    {
    "src": "screenshots/in-game-1x.jpg",
    "sizes": "640x480",
    "type": "image/jpeg"
    },
    {
    "src": "screenshots/in-game-2x.jpg",
    "sizes": "1280x920",
    "type": "image/jpeg"
    }
    ]
    }

    要在页面是使用的话直接用 标签引用即可。

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

    这样浏览器就可以安装你的 Web 应用了。



沪ICP备19023445号-2号
友情链接