Amazon Device Messaging概览
借助Amazon Device Messaging (ADM),您可以向运行应用的亚马逊设备发送消息,以便让用户了解最新情况并参与其中。无论您是要为用户提供游戏更新还是在好友发来了消息时提醒用户,ADM都可以帮助您实现。
如果您有一个现有Android应用,并且它使用Google Firebase Cloud Messaging (FCM),请遵循设备消息传递迁移指南,或考虑使用A3L Messaging SDK。
请注意,Kindle Fire(第1代)设备不支持ADM。
下载Amazon Device Messaging (ADM) SDK
您可以从这里下载ADM SDK:
下载包括API参考文档和已集成ADM的示例应用。请注意,下载ADM SDK即表示您同意我们的程序材料许可协议。将该SDK的内容提取到您所选的位置。
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发送的消息的传送流如下所示:
- 您的服务器将一条包含JSON数据的消息发送到ADM服务器。
- ADM服务器将消息发送到设备上的ADM客户端,该设备上安装有您的应用。
- ADM客户端获取JSON消息数据并将其作为添加到Android Intent对象的一组附加信息传递到您的应用。
标识与安全
使用ADM时,您将使用以下元素标识您的服务器、应用以及消息的目的地。所有这些元素协同工作,可帮助确保您的数据仅归您所有。
-
注册ID。 注册ID标识在特定设备上运行且为特定用户注册的唯一应用实例。首次在特定设备上安装您的应用时,它会从ADM请求注册ID,如集成您的应用中所述。您的服务器使用该注册ID将消息定向到正确的设备/用户。如果用户在同一台设备上卸载并重新安装您的应用,应用的注册ID可能会更改。
-
API密钥。 API密钥是一种元数据,ADM使用该元数据来区分您的应用和特定设备上的其他应用。API密钥将由亚马逊分配给您;有关详细信息,请参阅获取凭证。
-
OAuth客户端凭证。 您的客户端凭证由两组数据组成:“客户端标识符”和“客户端密钥”值。这些凭证将由亚马逊分配给您;有关详细信息,请参阅获取凭证。您的服务器在请求访问令牌时,需要使用这些凭证的两组数据。
-
访问令牌。 访问令牌是一种短期元数据,它向ADM确认您服务器的身份,以便您可以发送消息。您的服务器通过在对ADM服务器的请求调用中提供您的客户端凭证,获取其访问令牌。当您的某一服务器请求访问令牌时,对该请求的响应将包含访问令牌及其使用期限(以秒为单位)。有关更多信息,请参阅请求访问令牌。
ADM标识符和凭证
下表列出了ADM标识符和凭证。
ID/凭证 | 获取者... | 获取自... | 使用者... | 唯一性 |
---|---|---|---|---|
注册ID | 您应用的特定实例 | ADM服务器,通过安装有应用实例的设备上的ADM客户端。 | 您的服务器、ADM服务器和ADM客户端,用于将消息路由到您的应用的正确实例。 | 对于特定用户在给定设备上进行的每次应用安装都是唯一的。如果注册ID无效或处于非活动状态,则定向到注册ID的消息将失败并且ADM将返回相应的错误消息。例如,如果用户卸载并重新安装您的应用,您可能会收到一个新的注册ID。 |
API密钥 | 由您获取,用于您的应用 | 亚马逊;请参阅获取凭证以了解有关此过程的详细信息。 | ADM客户端,以确认您应用的身份。 | 不同版本的应用(例如,调试版本和生产版本)均需要其自己的API密钥。 |
OAuth客户端凭证 | 由您获取,用于您的服务器 | 亚马逊;请参阅获取凭证以了解有关此过程的详细信息。 | 您的服务器和ADM服务器,用于标识您的服务器以便获取访问令牌。 | 对您的应用是唯一的。 |
访问令牌 | 您的服务器 | ADM服务器,响应您的请求调用。 | 您的服务器和ADM服务器,用于验证您能否发送消息。 | 每个服务器一次仅使用一个访问令牌。在旧访问令牌过期后,您必须获取一个新的令牌。 |
Last updated: 2022年5月18日