Amazon Device Messaging概览


Amazon Device Messaging概览

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

架构

ADM架构的优势在于:

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

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

灵活。 ADM不处理您以任何方式发送的数据。您的消息仅需要大小不超过6KB,并以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密钥将由亚马逊分配给您;有关详细信息,请参阅获取凭证

OAuth客户端凭证。 您的客户端凭证由两组数据组成:“客户端标识符”和“客户端密钥”值。这些凭证将由亚马逊分配给您;有关详细信息,请参阅获取凭证。您的服务器在请求访问令牌时,凭证的两组数据都需要用到。

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

表1: ADM标识符与凭证

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