IMessage对象目标的目标终端节点。目标资源代表生命周期入口点组件或抽象主题,接收者可以在其上注册筛选器以监听更新。所有消息URI都符合RFC 3986的子集。
语法
消息目标URI应遵循标准URI语法:scheme "://" authority ["/" path] ["?" query] ["#" fragment]。它可以分为4个部分 - 方案、权限、查询参数和片段。如果URI不遵循此语法,或者不遵循下文所述为每个个体定义的规则,则makeMessageBuilder API将引发InvalidArgument错误。
仅使用URI的方案、权限和路径部分进行寻址。
方案
方案是URI中位于方案分隔符://之前的部分。方案字符串用于传达将消息路由到正确的接收者必须遵循的协议。
方案字符串必须是包含小写字母数字的单个单词,并且不得包含任何空格。每个URI都必须以非空的方案字符串开头。
权限
权限由主机字符串和端口字符串组成,以:分隔。但是,消息URI中无法识别端口规范。
主机
主机是URI中方案分隔符://之后的部分,位于/或?之前。如果未包含/或?,URI结束。
主机字符串必须是通配符形式的文字*或包含小写字母数字。它们不得包含任何空格,但可以有多个带句点.的单词,以表明命名方案的层次结构。例如,com.amazon.ota。每个URI必须在方案字符串和分隔符后面包含一个非空的主机字符串。
路径
路径是URI的可选部分,位于/之后(在主机字符串之后),可以位于字符?之前。如果未包含/或?,URI结束。
路径可用于标识消息接收者在收到消息后必须执行的功能。
路径字符串只能包含字母数字(小写或大写),不含任何空格,但单词之间可以有/来表示嵌套功能。路径字符串必须紧接在主机字符串之后,否则必须将其省略。
查询参数
查询参数是位于?之后的可选字符串,位于路径字符串之后,如果不存在路径字符串,则在主机字符串之后。查询参数不用于将消息路由到其目标。
查询参数用于将字符串数据作为URI的一部分传递。
请注意,最好使用消息附件而非查询参数。
查询参数必须采用以下格式?key1=value1&key2=value2...。键和值只能包含字母数字(小写或大写),不得包含任何空格。
片段
片段是一个可选字符串,位于#后面,可以出现在查询参数之后。它们通常用于提供有关要执行的任务的任何其他元数据。片段必须包含字母数字(小写或大写),不含任何空格。如本文档后面所述,片段在有限的情况下用于将消息路由到其目标。
Vega消息传递中的URI方案
启动和深层链接方案
共同特征:- 筛选器规格:仅限清单
- 可配置的消息优先级:否。立即处理。
- 支持内联消息响应: 是
PKG方案 (pkg)
pkg方案可让您直接按名称处理生命周期组件。 格式:pkg://<组件id> 示例:pkg://com.amazon.lcm.test.main
筛选器匹配:主机
说明:
- 主机字符串是应用清单中的组件ID。
- 这是第三方应用开发者可以用来定义新消息的唯一方案。
- 您可以确定要启动的生命周期组件。
操作系统方案 (os)
os系统方案提供了一种独立于平台的方法,用来访问操作系统的核心功能,例如启动主屏幕或设置应用。 格式:os://<用例>[<子页面>] 示例:os://settings- 设置主页os://home- 用于将固定到后台堆栈的组件标识为默认应用os://browser- 用于启动默认浏览器
amzns方案 (amzns)
程序包管理器使用amzns方案,根据查询参数中提供的标识符启动应用。 Format: 示例:amzns://apps?si=ABCD1234amzns://apps?p=com.foo.baramzns://apps?asin=ABCD1234
- 主机字符串必须是“apps”。
- 标识符类型必须是
si、p或asin之一,其中si代表商店标识符(亚马逊或其他应用商店),p代表应用清单中列出的程序包id,asin代表亚马逊应用商店标识符。 - 如果设备上不存在此类应用,则启动默认应用商店(如果有)。
- 不允许任何其他应用为此URI安装消息目标。
http、https方案(http、https)
http和https方案允许应用打开针对通常在浏览器中打开的网站的网页URI。 Format: 示例:https://www.amazon.com/shop
筛选器匹配:主机 + 路径
说明:
- 通过使用标准网页URI深层链接到应用内的内容,应用开发者可以在未安装应用的设备上得体地回退到其网站。
- 优先选择https而不是http,因为它更安全,可以防止意外泄露隐私敏感的用户信息。
自定义方案
自定义方案由应用定义,允许应用直接从其他应用或网站启动。 Format: 示例:livetv://watchnow
筛选器匹配:主机 + 路径
说明:
- 必须在配置文件中使用正确的程序包ID来定义方案。
- 对主机和路径没有限制。
- 与http相比,自定义方案只能在安装应用后被拦截,并且在未安装应用的情况下不提供回退。
- 与自定义方案相比,优选https。
事件方案
共同特征:- 筛选器匹配:主机 + 路径
- 筛选器规格:仅限运行时
广播方案 (broadcast)
broadcast方案URI是一个事件主题标识符,允许发布者向所有注册订阅者分发消息。 格式:broadcast://*/<反向dns命名空间>/<主题>/<子主题> 示例:broadcast://*/com.amazon.idle/state/idle/screensaver
说明:
- 可配置的消息优先级:否。立即传递,任务管理器启动除外。
- 支持内联消息响应:否。
单播方案 (unicast)
unicast方案URI是一种事件主题标识符,它可让发布者根据其程序包ID将消息分发给特定的一部分已注册订阅者。 格式:unicast://*/<反向dns命名空间>.<主题>/<子主题> 示例:unicast://*/com.amazon.push-service/force-ota
说明:
- 可配置的消息优先级:是。立即传递或延迟传递。
- 支持内联消息响应: 可以。
支持Android意图样式URI
消息传递主要使用基于URI的系统。但是,为了保持与现有Fire OS应用的兼容性,对意图样式URI的支持有限。请谨慎使用此兼容性功能。 HTTPS URI是确保跨平台兼容性的首选方法。应用开发者应使用标准URI方案,因为将来可能不支持意图样式URI。 自定义方案、amzns、amzn、http和https支持URI末尾的意图片段。此外,可以在消息传递中使用以下意图对象的URI表示。 所有基于意图的方案的共同特征:- 筛选器规格:仅限清单
- 可配置的消息优先级:否。立即处理。
- 支持内联消息响应: 是
- 筛选器匹配:意图规则
仅限片段
格式:#Intent;<键1>=<值1>;<键2>=<值2>;…;end; 示例:#Intent;action=OPEN_NETFLIX_ACTION_2;end;
说明:
- 每个URI只能有一个意图片段。
key1、key2等是意图中支持的一系列已知键。- 某些键对可以支持的值的数据类型有限制。
- 此方案必须在清单中使用
fos://前缀进行定义。但是,在运行时,可以使用不带前缀的URI发送消息。
Android应用方案 (android-app)
格式:android-app://<程序包id>[<方案>[<主机>[<路径>]]][#<意图片段>] 示例:android-app://com.netflix#Intent;action=OPEN_NETFLIX_ACTION;end;
说明:
- 主机字符串必须是应用清单中的程序包ID。
- 清单中不直接支持此方案。要在清单中定义它,请将其转换为带有
fos://前缀的仅限片段的表示。但是,在运行时,可以使用这些URI发送消息,无需进行任何更改。
意图方案 (intent)
格式:intent:[//][<主机>][<路径>][#<意图片段>] 示例:intent:#Intent;action=OPEN_NETFLIX_ACTION;end;
说明:
//如果URI中存在scheme=,则必须在intent:之后填写内容。- 片段中不应存在任何主机或路径。
- 清单中不直接支持此方案。要在清单中定义它,请将其转换为带有
fos://前缀的仅限片段的表示。但是,在运行时,可以使用这些URI发送消息,无需进行任何更改。

