Copyright © 2021-2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
本规范是 Web 应用清单 和 Web App Manifest - 应用信息 规范的补充成员注册表,这些成员为应用清单提供额外元数据,用于描述 MiniApp。这个 基于 JSON 的清单文件使开发者能够设置 MiniApp 的基本信息,例如标识、可读描述、版本数据和样式信息。MiniApp 清单还配置 属于 MiniApp 的页面和部件的路由。
本节描述本文档在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版,可在 W3C 技术 报告索引中找到,网址为 https://www.w3.org/TR/。
本文档由 MiniApps 工作 组作为 工作草案发布,并使用 推荐标准轨道。
作为工作草案发布并不 表示得到 W3C 及其成员的认可。
这是一份草案文档,可能在任何时候由其他 文档更新、替换或废弃。除作为进行中的工作外, 不宜引用本文档。
本文档由一个 依据 W3C 专利 政策运作的小组制作。 W3C 维护一份 与本小组交付成果相关的任何专利 披露的公开列表; 该页面还包括 披露专利的说明。任何实际 知晓其认为包含 必要权利要求 的专利的个人,必须依照 W3C 专利政策第 6 节披露相关信息。
本文档受 2023年11月03日 W3C 流程文档约束。
MiniApp 清单是一个 [JSON] 文档,它 扩展并剖析 Web App Manifest [APPMANIFEST] 和 Web App Manifest - Application Information [MANIFEST-APP-INFO],用于描述 与 MiniApp 关联的元数据。
本规范定义了一组用于描述 MiniApp 的元数据,通过提供用于描述和设置 MiniApp 的附加约束和特定机制,
扩展 Web 应用
清单和 Web App Manifest - 应用
信息。MiniApp 清单直接复用这些规范中的基本元素
(即 name、short_name、description 和 icons),
并添加专门影响 MiniApp 的补充成员(例如 app_id、
version、platform_version、device_type、pages、
req_permissions 和 widgets)以及其外观和感受(例如
color_scheme 和 window)。
MiniApp 清单MUST 在其根部包含 以下成员:
MiniApp 清单的
成员中的每个图像
资源对象MUST 包含:
icons
MiniApp 清单MAY 在其根部包含
成员。该成员MUST 包含一个由 列表组成的数组,其中包含 MiniApp 部件
资源。每个 MiniApp 部件资源对象MUST 包含以下成员:
widgets
MiniApp 清单MAY 在其根部包含
成员。该成员MUST 包含一个由 列表组成的数组,其中包含 MiniApp
权限资源。每个 MiniApp 权限资源对象
MUST 包含以下成员:
req_permissions
MiniApp 用户代理MAY 实现清单的供应商特定扩展,支持可选成员。
下表显示了 MiniApp 清单的成员概要:
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
|
字符串 | 是 | MiniApp 标识符 |
|
字符串 | 否 | MiniApp 配色方案 |
|
字符串 | 否 | MiniApp 描述 |
|
列表 | 否 | 支持的设备 |
|
字符串 | 否 | 文本方向 |
|
图像资源 列表 | 是 | MiniApp 图标 |
|
字符串 | 否 | MiniApp 主要语言 |
|
字符串 | 是 | MiniApp 名称 |
|
列表 | 是 | 页面路由信息 |
|
平台版本 资源 | 是 | 支持的平台版本 |
|
权限资源 列表 | 否 | 所需权限 |
|
字符串 | 否 | MiniApp 短名称 |
|
版本资源 | 是 | MiniApp 版本 |
|
部件资源 列表 | 否 | MiniApp 部件 |
|
窗口资源 | 否 | 窗口样式 |
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
label |
字符串 | 否 | 无障碍文本 |
sizes |
字符串 | 否 | 图标的分辨率尺寸 |
src |
字符串 | 是 | 图标的来源 |
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
|
number | 是 | 支持的最低平台版本 |
|
字符串 | 否 | 目标平台版本类型 |
|
字符串 | 否 | 目标平台版本代码 |
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
|
字符串 | 是 | 权限名称 |
|
字符串 | 否 | 请求权限的原因 |
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
|
number | 是 | 版本代码 |
|
字符串 | 是 | 版本名称 |
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
|
number | 否 | 支持的最低平台版本 |
|
字符串 | 是 | 部件名称 |
path
|
字符串 | 是 | 部件路径 |
| 成员 | 类型 | 必需 | 描述 |
|---|---|---|---|
|
布尔值 | 否 |
启用/禁用页面
的自动计算
|
|
字符串 | 否 | 窗口背景颜色 |
|
字符串 | 否 | 背景文本样式 |
|
number | 否 | 基准页面设计宽度 |
|
布尔值 | 否 | 启用下拉刷新事件 |
|
布尔值 | 否 | 全屏显示 |
|
字符串 | 否 | 导航栏背景颜色 |
|
字符串 | 否 | 导航栏的文本样式 |
|
字符串 | 否 | 导航栏标题 |
|
字符串 | 否 | 导航栏样式 |
|
number | 否 | 触发上拉触底事件的距离 |
|
字符串 | 否 | 屏幕方向设置 |
其他应用
清单成员,例如 scope、
theme_color 和
shortcuts,当前不受
MiniApp 用户代理支持。
本节是非规范性的。
以下代码表示一个 MiniApp 清单示例:
{
"dir": "ltr",
"lang": "en-US",
"app_id": "org.example.miniapp",
"name": "MiniApp Demo",
"short_name": "MiniApp",
"version": {
"name": "1.0.1",
"code": 11
},
"description": "A Simple MiniApp Demo",
"icons": [
{
"label": "Red lightning",
"src": "common/icons/icon.png",
"sizes": "48x48"
}
],
"platform_version":{
"min_code": 1,
"release_type": "Beta1",
"target_code": 2
},
"pages": [
"pages/index/index",
"pages/detail/detail"
],
"window": {
"background_color": "#ffffff",
"fullscreen": false,
"navigation_bar_text_style": "black",
"navigation_bar_title_text": "My MiniApp",
"navigation_bar_background_color": "#f8f8f8"
},
"widgets": [
{
"name": "widget",
"min_code": "2",
"path": "widgets/index/index"
}
],
"req_permissions": [
{
"name": "system.permission.LOCATION",
"reason": "To show user's position on the map"
},
{
"name": "system.permission.CAMERA",
"reason": "To scan a QR code"
}
],
"color_scheme": "light",
"device_type": [
"phone",
"tv",
"car"
]
}
MiniApp 清单使用以下基本应用 清单成员。
MiniApp 清单的
dir
成员在指定可本地化成员的基本方向的同时,也指定整个 MiniApp 的默认
基本文本方向。
成员的值可以设置为 [APPMANIFEST] 中指定的
text-directions 之一。文本方向值如下:
dir
ltr"
rtl"
auto"
(默认)
当处理 MiniApp
清单时,根据 [APPMANIFEST] 规范,使用
处理
dir 成员算法来处理
dir 成员。
MiniApp 清单的
icons
成员描述用作 MiniApp 图标式表示的图像。该成员是由图像
资源有序
映射组成的列表。
如 [IMAGE-RESOURCE] 所规定,图像资源由以下内容组成:
label
sizes
link
的
sizes
属性相同的语法表示。
src
当处理 MiniApp
清单时,根据 [APPMANIFEST] 规范,使用
处理图像资源算法来处理
icons 成员。
强烈鼓励开发者添加 label,除非图像
资源的无障碍名称可以从其上下文中的外部标签推断出来。
MiniApp 清单的
lang
成员在指定可本地化成员的主要语言的同时,也指定
整个 MiniApp 的主要语言。该成员是一个字符串,形式为语言
标签,即匹配 [BCP47] 中定义的
Language-Tag 产生式的字符串,如 [APPMANIFEST] 中所定义。
当处理 MiniApp
清单时,根据 [APPMANIFEST] 规范,使用
处理
lang 成员算法来处理
lang 成员。
MiniApp 清单的 name
成员是应用的描述性名称。
这是直接显示给用户的名称。它与桌面图标一起以及在 MiniApp 管理上下文中用作 MiniApp 的显示名称。
当处理 MiniApp
清单时,根据 [APPMANIFEST] 规范,使用
处理文本成员算法来处理
name 成员。
MiniApp 清单的
short_name
成员为 MiniApp 提供一个简洁且易读的名称。当没有足够空间显示
中提供的完整 MiniApp 名称时,可以使用它。
name
当处理 MiniApp
清单时,根据 [APPMANIFEST] 规范,使用
处理文本成员算法来处理
short_name 成员。
以下成员在 Web App Manifest - Application Information 规范 [MANIFEST-APP-INFO] 中定义。
MiniApp 清单的
description
成员为 MiniApp 提供文本描述,以自然语言表示 Web 应用的目的,如
[MANIFEST-APP-INFO] 中定义
要处理 description 成员,给定有序映射 json 和有序映射 manifest:
以下成员定义在 MiniApp 清单的范围内,用于处理 MiniApp 的特定方面。
MiniApp 清单的
app_id
成员是一个字符串,用于
唯一标识 MiniApp。该成员主要用于包管理,支持 MiniApp 版本化的
更新和发布过程。
的值既区分大小写,也对 Unicode 中字符的不同编码方式敏感。
因此,只有当两个
app_id
值被编码为相同的码
点序列时,它们才相等。
app_id
MiniApp 的一个常见实践是使用类似反向域名的约定,该约定由
Java
包命名约定使用(例如 org.example.miniapp),并遵循
以下规则:
appIdRule = name *("." name)
name = ALPHA [*( ALPHA / DIGIT / "-" ) ( ALPHA / DIGIT)]
可选的MiniApp 清单的
color_scheme
成员是一个字符串,用于
指示 MiniApp 的首选配色方案(即 ""、"auto,或 "light"),覆盖窗口资源对象中的其他配置
成员,包括
dark、
background_color、
background_text_style、
和
navigation_bar_text_style。
navigation_bar_title_text
该成员MUST 包含以下配色 方案值之一:
auto"light"dark"MiniApp 用户代理MAY 实现预定义的样式资源,例如 每个配色方案的背景颜色、封面图像和图标。此外,开发者MAY 使用 prefers-color-scheme CSS 媒体特性 [MEDIAQUERIES-5] 为每种模式定义自定义样式表。
可选的MiniApp 清单的
device_type
成员是一个由字符串组成的
列表,用于指示
MiniApp 预期运行的设备类型。该成员的值告知用户代理,该 MiniApp 是否被设计为能够在特定平台上
正常运行,例如智能手机、智能电视、车载主机、可穿戴设备和其他设备。
该成员在初始化过程中用于设备兼容性验证。通过检查其值,用户代理会根据 UI 组件、CSS 支持和 API 的兼容性,决定 MiniApp 是否适合在该平台上运行。如果验证过程失败,MiniApp 用户代理决定如何 实现平台行为(例如停止初始化阶段并拒绝安装,或安装 MiniApp 但拒绝执行)。
本文档未规定该成员的可能值列表,以在实现中保持灵活性,并考虑任何设备和用例。一些常见
值包括:smartphone、tablet、tv、car、
wearable 和 iot。
MiniApp 清单的
pages
成员是一个由相对 URL
字符串组成的列表,
用于指定 MiniApp 中包含的页面集合。列表中的每一项
表示一个由其页面路由标识的页面。
MiniApp 页面路由是 MiniApp 页面的相对 路径和文件名。在配置页面路由时,开发者MAY 省略 定义页面主组件的文件扩展名(例如 pages/mypage 或 pages/mypage.html)。
列表中的第一项定义
MiniApp 的主页或入口点。
pages
MiniApp 清单的
platform_version
成员包含一个MiniApp 平台版本
资源有序
映射,用于描述运行 MiniApp 的最低要求和预期平台版本,
包括
、
min_code、
和
target_code。
release_type
要处理 platform_version 成员,给定有序映射 json 和有序映射 manifest:
min_code 成员,传入 json["platform_version"] 和 platform_version。target_code 成员,传入 json["platform_version"] 和 platform_version。release_type 成员,传入 json["platform_version"] 和 platform_version。
可选的MiniApp 清单的
req_permissions
成员是一个由 MiniApp 权限资源有序映射组成的
列表。
每个 MiniApp 权限资源声明了使用某项具体系统功能 (例如访问设备的位置、用户联系人、传感器和摄像头)的请求,这些功能是 MiniApp 正常执行所需的。
要处理 req_permissions 成员,给定有序映射 json 和有序映射 manifest:
name 成员,传入 item 和 permission。reason 成员,传入 item 和 permission。
用户代理会请求用户同意,以在访问这些特定功能期间保护其隐私。
成员中的这些信息可由应用商店或托管平台使用,以根据用户偏好、隐私政策或设备能力筛选
MiniApp。
req_permissions
MiniApp 清单的
version
成员包含一个MiniApp 版本资源有序映射,用于
表示
和
code。
name
要处理
version 成员,给定有序映射 json 和有序映射 manifest:
code
成员,传入 json["version"] 和 version。name
成员,传入 json["version"] 和 version。
可选的MiniApp 清单的
widgets
成员是一个由 MiniApp 部件资源组成的列表,这些部件资源是
MiniApp 的一部分。
MiniApp 包MAY 同时包含MiniApp 页面和 Widgets。
作为 MiniApp 一部分的 widget 会应用MiniApp 清单的一些成员,包括:
但是,widget 也具有其专属字段,这些字段在MiniApp 部件资源中定义。
要处理
widgets 成员,给定有序映射 json 和有序映射 manifest:
name 成员,传入 item 和
widget。
path 成员,传入 item 和
widget。
min_code 成员,传入 item、manifest 和
widget。
可选的MiniApp 清单的
window
成员包含一个MiniApp 窗口资源有序映射,用于
描述 MiniApp 框架的外观和感受,包括状态栏、导航栏、标题、背景颜色以及其他视觉配置元素的样式。
对象成员继承自
MiniApp 清单根部的
window
和
dir
成员的文本方向和语言配置。
lang
要处理
window 成员,给定有序映射 json 和有序映射 manifest:
auto_design_width 成员,传入 json["window"] 和
window。
background_text_style 成员,传入 json["window"] 和 window。
design_width 成员,传入 json["window"] 和 window
enable_pull_down_refresh 成员,传入 json["window"] 和 window。
fullscreen 成员,传入 json["window"]
和 window。navigation_bar_text_style 成员,传入 json["window"] 和 window。
navigation_bar_title_text 成员,传入 json["window"] 和 window。
navigation_style 成员,传入 json["window"] 和 window。
on_reach_bottom_distance 成员,传入 json["window"] 和 window。
orientation 成员,传入 json["window"] 和 window。
auto_design_width 成员,传入 json["window"] 和
window。
MiniApp 清单作为应用清单的扩展,提供了一个补充算法, 用于在 [APPMANIFEST] 中定义的 处理 清单算法的扩展点处处理。因此,用户代理首先处理应用清单的成员,然后在 扩展点处继续使用以下算法处理 MiniApp 清单成员。
要在扩展点处处理 MiniApp 清单,给定有序映射 json 和有序映射 manifest:
TypeError。TypeError。TypeError。TypeError。app_id 成员,传入
json 和 manifest。
TypeError。color_scheme
成员,传入 json 和 manifest。
description
成员,传入 json 和 manifest。
device_type
成员,传入 json 和 manifest。
pages 成员,传入
json 和 manifest。
TypeError。platform_version
成员,传入 json 和 manifest。
TypeError。req_permissions
成员,传入 json 和 manifest。
version 成员,
传入 json 和 manifest。
TypeError。widgets 成员,
传入 json 和 manifest。
window 成员,传入
json 和 manifest。
MiniApp 平台版本资源是一个有序映射,指示 MiniApp 要使用的最低和目标 平台版本。
以下成员定义在 MiniApp 清单的范围内,用于处理平台版本资源的特定方面。
MiniApp 平台版本资源的
min_code
成员是一个非负整数,表示 MiniApp 用户代理平台的最低支持版本,以确保 MiniApp 的正常运行。
要处理平台版本的 min_code 成员,给定有序映射 json
和有序映射 platform_version:
MiniApp 平台版本资源的
release_type
成员是一个字符串,用于
指示运行应用所需的 MiniApp 用户代理目标平台版本的发布类型。
MiniApp 供应商可以为该成员推荐特定的版本化方案和值(例如
CanaryN、BetaN 或 Release,其中 N 表示正
整数,例如 Beta1)。
要处理平台版本的 release_type 成员,给定有序映射 json
和有序映射 platform_version:
MiniApp 平台版本资源的
target_code
成员是一个非负整数,表示 MiniApp 用户代理平台的目标支持版本,以确保 MiniApp 的正常运行。
要处理平台版本的 target_code 成员,给定有序映射 json
和有序映射 platform_version:
MiniApp 权限资源是一个有序映射,用于描述 使用某项具体系统功能(例如访问设备的位置、用户联系人、传感器和 摄像头)的请求,这些功能是 MiniApp 正常执行所需的。
以下成员定义在 MiniApp 清单的范围内,用于处理权限 资源的特定方面。
MiniApp 权限资源的
name
成员是一个字符串,用于
指示所请求功能的名称。
可选的MiniApp 权限资源的
reason
成员是一个字符串,用于
指示请求
[MiniApp permission resource/name=] 属性中指定功能的原因。
MiniApp 版本 资源是一个有序 映射,用于描述 MiniApp 的版本代码和版本名称。
以下成员定义在 MiniApp 清单的范围内,用于处理版本 资源的特定方面。
MiniApp 版本资源的
code
成员是一个非负整数,表示 MiniApp 的版本。它主要用于
增强 MiniApp 的可维护性和安全性(例如增量版本之间的兼容性)。
code
成员旨在支持开发和部署过程,通常不会显示给最终用户。
要处理版本的 code 成员,给定有序映射 json
和有序映射 version:
MiniApp 版本资源的 name
成员是一个字符串,主要用于描述 MiniApp 的版本信息,
在版本控制、MiniApp 应用和平台兼容性中发挥重要作用。它通常被视为公开显示并展示给
用户的版本。
该成员的RECOMMENDED 格式为 X.Y.Z,其中
X、Y 和 Z 是非负整数值(例如
1.10.0),如 Semantic Versioning [SEMANTIC-VERSIONING] 中所规定。
MiniApp 部件资源是一个有序映射,用于定义和配置属于 MiniApp 的widget。
以下成员定义在 MiniApp 清单的范围内,用于处理部件 资源的特定方面。
MiniApp 部件资源的
name
成员是一个字符串,用于
指示 widget 的标题。
MiniApp 部件资源的 path 成员是一个相对 URL 字符串,用于定义
widget 的对应页面路由,其表示方式与
列表中的表示方式相同。
pages
可选的MiniApp 部件资源的
min_code
成员是一个 number,用于指示MiniApp widget 支持的最低平台版本。
由于 Widget API 和 MiniApp API 可能不同,因此平台最低版本的声明也可能不同。因此,如果 widgets 成员
显式省略
,
用户代理将视为采用
min_code
对象中的
platform_version
成员所指定的相同要求。
min_code
要处理 widget 的 min_code 成员,给定有序映射 json、有序映射 widget
和有序映射 manifest:
MiniApp 窗口资源是一个有序映射,用于定义和 配置包含 MiniApp 的窗口。
以下成员定义在 MiniApp 清单的范围内,用于描述 MiniApp 窗口资源。
auto_design_width
成员是一个布尔值,用于
指示页面的
是否由用户代理自动计算。当
design_width
为 auto_design_widthtrue 时,
的值会被忽略。在这种情况下,系统的基准宽度会根据屏幕的像素
密度自动确定。
design_width
默认值:false。
background_color 成员是一个字符串,用于指定包含
MiniApp 的窗口的背景颜色。
该成员支持 sRGB 颜色,并且等同于
应用清单的 background_color。
默认值:"#ffffff"。
当处理 MiniApp
清单时,根据 [APPMANIFEST] 规范,使用
处理颜色成员算法来处理 window 的
background_color 成员。
background_text_style
成员是一个字符串,用于
指定背景文本样式,表示浅色或深色主题(即 "" 或 "light")。
dark
该成员支持 prefers-color-scheme 的值,并且MUST 包含以下背景文本样式值之一:
light"
dark"
(默认)
要处理 window 的 background_text_style 成员,给定有序映射 json 和有序映射 window:
design_width
成员是一个 number,用于指示页面设计在像素单位中的基准宽度。它用于视觉上
调整页面组件。
该值是非负整数,默认值为 750。
要处理 window 的 design_width 成员,给定有序映射 json
和有序映射 window:
enable_pull_down_refresh
成员是一个布尔值,用于
指定在与 MiniApp 交互期间是否启用 pull-to-refresh 事件。
默认值:false。
要处理 window 的
enable_pull_down_refresh 成员,给定有序映射 json
和有序映射 window:
fullscreen
成员是一个布尔值,用于
指示 MiniApp 是否以全屏显示模式显示。
当该成员取 true 值时,它等同于应用清单的
display
成员上的
值。当其取 fullscreenfalse 值时,它等同于
minimal-ui。
默认值:false。
on_reach_bottom_distance
成员是一个 number,用于定义触发页面上拉事件所需的距窗口底部的垂直偏移量。该成员的值是以像素单位表示的非负整数。
默认值:50。
要处理 window 的
on_reach_bottom_distance 成员,给定有序映射 json
和有序映射 window:
orientation
成员是一个字符串,用于
指定 MiniApp 的屏幕方向配置。
该成员支持方向值:"portrait" 和 "landscape",
它们定义在 OrientationLockType
[SCREEN-ORIENTATION] 中。
该成员等同于应用清单的
。
orientation
默认值:"portrait"。
可本地化成员是一个清单成员,其内容可以适应特定的
语言、地理和文化方面。这些可本地化成员共享在清单根部定义的语言标签
()
和显示方向
(lang)。
dir
以下成员是可本地化成员:
作为 MiniApp 包的重要组成部分,
manifest.json 文件通过引用不同文件类型中的MiniApp 包
资源来描述 MiniApp 的若干重要方面,例如
pages 目录中的页面脚本和视觉配置文件,以及 common 目录中的图像。详见
[MINIAPP-PACKAGING]。
MiniApp 的正常运行依赖于清单中的适当配置以及MiniApp 包资源的可用性。 这种依赖需要在开发阶段和部署阶段都进行检查。
本节是非规范性的。
本文档规定了一组元数据,使开发者和发布者能够描述和配置
MiniApp 的行为与外观。一些清单属性,例如 color_scheme 和
window 资源成员,旨在使用户代理生成自定义用户界面,从而实现
用户与 MiniApp 之间的交互。
成员允许开发者描述 MiniApp 在平台和操作系统中的视觉与图标式表示。
在这里,平台应当与平台无障碍服务进行适当通信,以表示这些图像,同时使用替代文本描述(例如
icons
的
iconlabel、
和
name)
来增强无障碍性(即设备主屏幕中的图标、应用目录中的列表,以及应用
配置)。
short_name
用户代理必须确保用户界面可感知且可操作,因此在处理影响用户代理界面和渲染内容的成员时,
应特别考虑,例如配色方案和主题的设置(即
、
color_scheme、
background_color、
background_text_style、
navigation_bar_background_color、
navigation_bar_background_color、
和
navigation_bar_text_style)
以及其他配置设置,例如
navigation_style、
orientation、
fullscreen
和
enable_pull_down_refresh。
on_reach_bottom_distance
清单的 成员定义了
MiniApp 的外观,包括导航栏的外观和感受,以及其他修改用户代理原生 UI 的功能,例如
window 或 fullscreen。用户代理必须提供
直观的机制来关闭应用,并恢复影响原生 UI 的更改。
orientation
解释此清单的用户代理应帮助用户在窗口和视口中定位并进行控制。
它们还应通过高级使用 device_type 成员,并使用供应商特定成员扩展清单来增强
无障碍性,从而提供面向不同使用场景的替代视图。因此,MiniApp 用户代理和平台应提供用于配置用户
样式表、主题以及自定义应用显示和交互的机制,遵循
适用的规范和约定,特别是 用户代理无障碍指南(UAAG)2.0。
清单数据帮助平台正确配置和处理应用。文档暴露的信息是公开的,因此第三方代理(例如应用市场和仓库) 可以使用清单信息来维护应用版本、分类并列出它们。
由于清单是 JSON 文档,并且通常会使用 [UNICODE] 编码, 因此 [JSON] 和 [UNICODE-SECURITY] 中描述的 安全考虑适用。为了防止开发者在清单中包含自定义/不受约束的数据,实现者可以使用比 JSON Schema 中定义的更严格的模式,对成员名称、类型和值范围施加其实现特定的 限制(例如防止内存溢出,或满足平台特定限制)。
MiniApp 资源(包括清单)的完整性作为整个MiniApp 包的一部分,由加密哈希 机制保护,如 [MINIAPP-PACKAGING] 中详述。
MiniApp 在目录中组织不同文件资源,
这些目录位于一个容器内。
清单成员,例如 、icons 和 pages 包含指向托管平台上本地
资源的路径。MiniApp 用户代理MUST 保证沙箱化
环境,检查这些路径的有效性,以防止对 MiniApp 包之外的非法访问。
widgets
开发者可以访问托管平台上的外部 MiniApp 数据资源(即未包含在主包中的资源) (例如指向其他应用和共享存储的深链接)或远程 HTTP 服务器。在前一种情况下,MiniApp 用户代理应实现所有 必要机制,以保证平台上的沙箱化环境。
成员定义 MiniApp 组件的路由,
包括一组页面映射,其中相对路径指向存储在 MiniApp 容器内的资源。用户代理MUST
忽略外部 URL 或不对应于 MiniApp 容器中有效资源的路径。
pages
清单规定了 MiniApp 运行期间可能请求的功能,这些功能涉及访问传感器以及 通过网络连接或通过与设备的直接连接(例如通过 Bluetooth、NFC 或 USB)与其他设备通信。 该声明并不意味着能够访问和使用该功能。但是,用户代理MUST 实现机制,以保证 服务和 API 的正确使用,并处理每项具体功能中的潜在漏洞。
本规范并不直接处理敏感数据。不过,MiniApp 清单中定义的信息有助于平台配置其隐私策略,使 MiniApp 能够管理其他设备的硬件、 软件和数据资源,而这些资源可能影响隐私。
MiniApp 清单并不促使收集、使用或披露个人数据。不过,MiniApp 用户 代理MUST 控制对敏感设备服务和功能的访问,这些服务和功能 可能会导致指纹识别。用户在权限管理中的行为模式,以及 设备的特定约束(即汽车、IoT 和 SmartTV 的 MiniApp),可能允许对用户进行 指纹识别。因此,MiniApp 用户代理MUST 控制对 设备资源的访问并保持沙箱化环境,保护对敏感资源的访问, 例如设备传感器、外部软件和个人数据,并且不披露用户偏好。
通过清单的 成员,开发者
声明 MiniApp 访问强大功能的要求。该成员允许
平台理解 MiniApp 可能请求的受限资源
(req_permissions
成员),告知用户潜在后果,并授予(或保持阻止)对
这些资源的访问。开发者SHOULD 使用 name
成员来说明请求这些高级资源的清晰且易于理解的理由。
reason
用户代理MUST 管理用户偏好,包括用户应明确授予以使用强大功能(例如地理定位 和设备传感器)的权限。用户代理MUST 实现机制,以便跨会话记住这些 用户偏好,使用户能够在任何时候撤销和授予权限。无需跨会话持久化 与清单相关的其他信息。
与 Web 应用一样,MiniApp 可以使用 UI 对话框进行安装。在安装过程中,用户
代理SHOULD 显示有关应用的清晰信息(即
、
app_id、
name、
short_name、
icons)。
这种透明信息允许最终用户在安装前作出有意识的决定。基于
此元数据,用户代理MAY 使用包内的数字签名方法,如 MiniApp
打包中所定义,以验证应用的完整性并最大化用户信任。
description
用户代理SHOULD 提供一种机制来移除已安装的 MiniApp。RECOMMENDED 在移除时,用户代理还向用户提供 撤销与该应用关联的其他持久数据和设置的机会,例如 权限和持久存储。
除标记为非规范性的章节外,本 规范中的所有编写指南、图表、示例和注释都是非规范性的。本规范中的其他所有内容都是规范性的。
本文档中的关键字 MAY、MUST、RECOMMENDED 和 SHOULD 应按照 BCP 14 [RFC2119] [RFC8174] 中的说明进行解释,但仅当它们像此处所示以全大写形式出现时才适用。
本规范使用 [RFC5234] 中定义的增广巴科斯-诺尔范式(ABNF)。
MiniApp 清单规范依赖 Infra Standard [INFRA] 来描述 算法。
有意验证 MiniApp 清单文档的开发者可以使用定义在 https://w3c.github.io/miniapp-manifest/manifest_schema.json 的 JSON Schema。
本节是非规范性的。
本节是非规范性的。
尽管不鼓励专有扩展,但它们可以作为清单扩展包含。在这种情况下, RECOMMENDED 为新成员使用供应商前缀。
我们鼓励实现者将专有扩展添加到扩展注册表。这使 社区能够跟踪供应商和/或 Web 社区定义并记录了哪些扩展。
Web App Manifest 允许使用供应商前缀添加新的专有清单成员:https://www.w3.org/TR/appmanifest/#proprietary-extensions
我们可能也需要类似的东西。
以下是三个假设的供应商扩展示例。
{
...
"wechat_new_feature": "foo",
"ali_new_url_system": "http://example.org",
"coolminiapp_menu_color": "#FA0000"
...
}
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: