概览


概览

借助 Amazon Device Messaging (ADM),您可以向运行应用的亚马逊设备发送消息,以便让用户了解最新情况并参与其中。无论您是为用户提供游戏更新还是让他们获悉其好友已到达的消息,ADM 都可以帮助您随时保持联系。

架构

ADM 架构的优势在于:

受保护。 作为发送者,您的服务器将通过 OAuth 2.0 客户端凭证流进行验证。当您的消息传递到设备时,将使用行业标准 SSL 加密对终端节点进行身份验证和保护。并且,ADM 使用设备上的 Android 权限将消息仅定向到您的应用。

简单。 ADM 是一种传输机制,用于将消息数据传送到您的应用。ADM 不提供任何内置的用户界面或其他数据处理。例如,在收到消息时,您的应用可能会唤醒设备,发布通知,显示自定义用户界面或同步数据。

灵活。 ADM 不处理您以任何方式发送的数据。您的消息仅需要大小不超过 6 KB,并以 JSONObject 键/值对形式发送数据。

以下特性同样适用于您通过 ADM 发送的消息:

  • ADM 唤醒设备以传送消息。
  • ADM 不保证消息能送达或送达顺序。
  • 由于网络状况各不相同,消息可能会被传送多次。您的应用必须能够处理重复消息的实例。
  • 消息到期。默认到期时间为一周;最长到期时间为一个月。您也可以在发送消息时为其设置自定义到期时间。当消息到期时,ADM 可能会从传送队列中删除该消息。

角色与职责

使用 ADM 发送消息时将涉及到四个组件,其中有两个组件您可以对其进行控制。

您的服务器

  • 使用访问令牌向 ADM 服务器标识它们自身。
  • 将消息发送到 ADM 服务器以便传送到您的应用

ADM 服务器

  • 使用访问令牌验证您的服务器的身份。
  • 将消息从您的服务器传送到设备上的 ADM 客户端

ADM 客户端

  • 处理您的应用注册到 ADM 服务器的过程。
  • ADM 服务器接收消息并将其传递到您的应用

您的应用

  • 注册到 ADM 客户端以便从您的服务器接收消息。
  • ADM 客户端接收传入的消息并处理这些消息。

消息流

从较高层面上来看,由 ADM 发送的消息的传送流如下所示:

  1. 您的服务器将一条包含 JSON 数据的消息发送到 ADM 服务器
  2. ADM 服务器将消息发送到设备上的 ADM 客户端,该设备上安装有您的应用
  3. ADM 客户端获取 JSON 消息数据并将其作为附加到 Android Intent 对象的一组附加数据传递到您的应用
understanding-adm
​从您的服务器到应用实例的消息通道

标识与安全

使用 ADM 时,您将使用以下元素标识您的服务器、您的应用以及您消息的目的地。所有这些元素协同工作,可帮助确保您的数据仅归您所有。

注册 ID。 注册 ID 标识在特定设备(注册到特定用户)上运行的应用的唯一实例。当您首次在给定设备上安装您的应用时,它会从 ADM 请求注册 ID,如集成您的应用中所述。您的服务器使用注册 ID 将消息定向到正确的设备/用户。如果用户在同一台设备上卸载然后再重新安装您的应用,您的应用的注册 ID 可能会更改。

API 键。 API 键是一种元数据,ADM 使用它对给定设备上您的应用和其他应用加以区分。API 键将由 Amazon 分配给您;有关详细信息,请参阅获取凭证

OAuth 客户端凭证。 您的客户端凭证是两个数据片段:“客户端标识符”和“客户端密钥”值。这些凭证将由 Amazon 分配给您;有关详细信息,请参阅获取凭证。您的服务器在其请求中使用这些凭证的两个片段来获取访问令牌。

访问令牌。 访问令牌是一种短​期元数据,它向 ADM 确认您服务器的身份,以便您可以发送消息。您的服务器通过在对 ADM 服务器的请求调用中提供您的客户端凭证,获取其访问令牌。当您的某一服务器请求访问令牌时,对该请求的响应将包含访问令牌及其使用期限(以秒为单位)。有关更多信息,请参阅请求访问令牌

表 1: ADM 标识符与凭证

ID/凭证 获取者... 获取自... 使用者... 唯一性
注册 ID 您应用的特定实例 ADM 服务器,通过安装有应用实例的设备上的 ADM 客户端。 您的服务器、ADM 服务器和 ADM 客户端,用于将消息路由到您的应用的正确实例。 对于特定用户的给定设备上安装的每个应用都是唯一的。如果注册 ID 无效或处于不活动状态,则定向到注册 ID 的消息将失败并且 ADM 将返回相应的错误消息。例如,如果用户卸载然后再重新安装您的应用,您可能会收到一个新的注册 ID。
API 键 您,用于您的应用 亚马逊;请参阅获取凭证以了解有关此过程的详细信息。 ADM 客户端,用于确认您应用的身份。 不同版本的应用(例如,调试版本和生产版本)均需要其自己的 API 键。
OAuth 客户端凭证 您,用于您的服务器 亚马逊;请参阅获取凭证以了解有关此过程的详细信息。 您的服务器和 ADM 服务器,用于标识您的服务器以便获取访问令牌。 对您的应用是唯一的。
访问令牌 您的服务器 ADM 服务器,响应您的请求调用。 您的服务器和 ADM 服务器,用于验证您发送消息的能力。 每个服务器一次仅使用一个访问令牌。您必须在旧访问令牌证书到期时获取一个新的。