as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

消息寻址方案

消息寻址方案

消息目标URI是一种标识符,用于标识作为IMessage对象目标的目标终端节点。目标资源代表生命周期入口点组件或抽象主题,接收者可以在其上注册筛选器以监听更新。所有消息URI都符合RFC 3986的子集。

语法

消息目标URI应遵循标准URI语法:方案 "://" 权限 ["/"路径] ["?"查询] ["#"片段]。它可以分为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 - 用于启动默认浏览器

筛选器匹配: 主机 + 路径

访问要求: 应用必须在其清单中添加以下部分才能访问操作系统方案URI。

[[wants.module]]
id = "/com.amazon.kepler.os_messages@IOsMessageModule"

amzns方案 (amzns)

程序包管理器使用amzns方案,根据查询参数中提供的标识符启动应用。

格式:amzns://apps[/路径]?<标识符类型>=<标识符值>

示例:

  • amzns://apps?si=ABCD1234
  • amzns://apps?p=com.foo.bar
  • amzns://apps?asin=ABCD1234

筛选器匹配: 主机

访问要求: 应用必须在其清单中添加以下部分才能访问亚马逊方案URI。

[[wants.module]]
id = "/com.amazon.kepler.os_messages@IOsMessageModule"

说明:

  • 主机字符串必须是“apps”。
  • 标识符类型必须是sipasin之一,其中si代表商店标识符(亚马逊或其他应用商店),p代表应用清单中列出的程序包id,asin代表亚马逊应用商店标识符。
  • 如果设备上不存在此类应用,则启动默认应用商店(如果有)。
  • 不允许任何其他应用为此URI安装消息目标。

http、https方案(http、https)

http和https方案允许应用打开针对通常在浏览器中打开的网站的网页URI。

格式:{http/https}://<主机>[<路径>][?查询参数]

示例:https://www.amazon.com/shop

筛选器匹配: 主机 + 路径

说明:

  • 通过使用标准网页URI深层链接到应用内的内容,应用开发者可以在未安装应用的设备上得体地回退到其网站。
  • 优先选择https而不是http,因为它更安全,可以防止意外泄露隐私敏感的用户信息。

自定义方案

自定义方案由应用定义,允许应用直接从其他应用或网站启动。

格式:<自定义方案>://[<主机>[<路径>]][?查询参数]

示例: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

Kepler消息传递主要使用基于URI的系统。但是,为了保持与现有Fire OS应用的兼容性,对意图样式URI的支持有限。请谨慎使用此兼容性功能。

HTTPS URI是确保跨平台兼容性的首选方法。应用开发者应使用标准URI方案,因为将来可能不支持意图样式URI。

自定义方案、amzns、amzn、http和https支持URI末尾的意图片段。此外,可以在Kepler消息传递中使用以下意图对象的URI表示。

所有基于意图的方案的共同特征:

  • 筛选器规格: 仅限清单
  • 可配置的消息优先级: 否。立即处理。
  • 支持内联消息响应: 是
  • 筛选器匹配: 意图规则

仅限片段

格式:#Intent;<键1>=<值1>;<键2>=<值2>;....;end;

示例:#Intent;action=OPEN_NETFLIX_ACTION_2;end;

说明:

  • 每个URI只能有一个意图片段。
  • 键1键2等是意图中支持的一系列已知键。
  • 某些键对可以支持的值的数据类型有限制。
  • 此方案必须在清单中使用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发送消息,无需进行任何更改。

支持的片段键

下表列出了支持的意图键及其限制:

值类型 组件分解 允许在URI中使用 单个URI中是否能有多个项目?
操作 字符串
类别 字符串
程序包 字符串 不适用
组件 字符串 不适用
方案 字符串 不适用
S.<> 字符串
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
B.<> 布尔值
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
b.<> 字节
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
c.<> char
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
d.<> double
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
f.<> float
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
i.<> 整数
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
l.<> 长型
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。
s.<> 短型
键foo不能对不同的类型重复。
相同类型的重复键foo被覆盖。

Last updated: 2025年9月30日