添加设备令牌或注册 ID - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

添加设备令牌或注册 ID

当您首次向通知服务(如 Apple Push Notification Service (APNs) 和 Firebase Cloud Messaging (FCM))注册应用程序或移动设备时,会从通知服务返回设备令牌或注册 ID。向 Amazon SNS 添加设备令牌或注册 ID 时,会将它们与 PlatformApplicationArn API 一起使用来为应用或设备创建终端节点。当 Amazon SNS 创建终端节点时,会返回一个 EndpointArn。Amazon SNS 就是通过 EndpointArn 知道要向哪个应用或移动设备发送通知消息的。

您可以通过以下方法将设备令牌和注册 ID 添加到 Amazon SNS:

  • 使用 Amazon Web Services Management Console 向 Amazon 手动添加单一令牌

  • 使用 CreatePlatformEndpoint API 上载多个令牌

  • 从将来会安装您的应用的设备注册令牌

手动添加设备令牌或注册 ID
  1. 登录 Amazon SNS 控制台

  2. 选择移动,然后选择推送通知

  3. 平台应用程序部分,选择您的应用程序,然后选择编辑。如果您尚未创建平台应用程序,请立即创建一个。有关如何执行此操作的说明,请参阅 创建平台应用程序

  4. 选择添加端点

  5. Endpoint Token (终端节点令牌) 框中,根据通知服务输入令牌 ID 或注册 ID。例如,对于 ADM 和 FCM,则输入注册 ID。

  6. (可选)在 User Data(用户数据)中,输入要与终端节点关联的任意信息。Amazon SNS 不会使用此数据。此数据必须采用 UTF-8 格式,并且必须小于 2KB。

  7. 最后,选择 Add Endpoints (添加终端节点)

    现在已经创建了终端节点,您可以直接向移动设备发送消息,也可以向订阅了某一主题的移动设备发送消息。

使用 CreatePlatformEndpoint API 上传多个令牌

以下步骤演示如何使用 Amazon 提供的示例 Java 应用程序(bulkupload 软件包)将多个令牌(设备令牌或注册 ID)上载至 Amazon SNS。您可以使用本示例应用帮助您开始上传现有令牌。

注意

下面的步骤使用 Eclipse Java IDE。这些步骤假定您已经安装 Amazon SDK for Java,并且您的 Amazon Web Services 账户 拥有 Amazon 安全凭证。有关更多信息,请参阅Amazon SDK for Java。有关凭证的更多信息,请参阅《Amazon Web Services 一般参考》中的如何获取安全凭证?

  1. 下载并解压缩 snsmobilepush.zip 文件。

  2. 在 Eclipse 中创建一个新的 Java 项目。

  3. SNSSamples 文件夹导入到新建的 Java 项目的顶级目录中。在 Eclipse 中,右键选择 Java 项目的名称,然后选择 Import (导入),展开 General (常规),依次选择 File System (文件系统)Next (下一步),浏览到 SNSSamples 文件夹,选择 OK (确定),然后选择 Finish (完成)

  4. 下载 OpenCSV 库的副本,并添加到 bulkupload 包的生成路径中。

  5. 打开 bulkupload 包中包含的 BulkUpload.properties 文件。

  6. 将以下内容添加到 BulkUpload.properties 中:

    • 要向其添加终端节点的 ApplicationArn

    • 包含令牌的 CSV 文件位置的绝对路径。

    • 要为记录 Amazon SNS 正确解析或解析失败的令牌创建的 CSV 文件的名称(如 goodTokens.csvbadTokens.csv)。

    • (可选)用于指定包含令牌的 CSV 文件中的分隔符和引号的字符。

    • (可选)用于同时创建终端节点的线程数量。默认值为 1 个线程。

    完成后的 BulkUpload.properties 与下文类似:

    applicationarn:arn:aws:sns:us-west-2:111122223333:app/FCM/fcmpushapp csvfilename:C:\\mytokendirectory\\mytokens.csv goodfilename:C:\\mylogfiles\\goodtokens.csv badfilename:C:\\mylogfiles\\badtokens.csv delimiterchar:' quotechar:" numofthreads:5
  7. 运行 BatchCreatePlatformEndpointSample.java 应用程序,将令牌上载至 Amazon SNS。

    在本例中,为成功上载至 Amazon SNS 的令牌创建的终端节点将记录到 goodTokens.csv 中,格式不正确的令牌将记录到 badTokens.csv 中。此外,您还应看到写入 Eclipse 控制台的 STD OUT 日志包含与下面类似的内容:

    <1>[SUCCESS] The endpoint was created with Arn arn:aws:sns:us-west-2:111122223333:app/FCM/fcmpushapp/165j2214-051z-3176-b586-138o3d420071 <2>[ERROR: MALFORMED CSV FILE] Null token found in /mytokendirectory/mytokens.csv
从将来会安装您的应用的设备注册令牌

您可以使用下面两个选项之一:

  • 使用 Amazon Cognito 服务:您的移动应用将需要凭证来创建与您的 Amazon SNS 平台应用程序关联的终端节点。我们建议您使用会在一段时间后过期的临时凭证。对于大多数情况,我们建议您使用 Amazon Cognito 创建临时安全凭证。有关更多信息,请参阅 Amazon Cognito 开发人员指南。如果您希望在有应用向 Amazon SNS 注册时收到通知,可以进行注册,以便接收提供新终端节点 ARN 的 Amazon SNS 事件。您也可以使用 ListEndpointByPlatformApplication API 获取向 Amazon SNS 注册的终端节点的完整列表。

  • Use a proxy server:如果您的应用程序基础设施已经过设置,可使您的移动应用程序在每次安装时进行调用和注册,则可以继续使用此设置。您的服务器将充当代理服务器并将设备令牌传递给 Amazon SNS 移动推送通知,同时传递要存储的所有用户数据。为此,代理服务器将使用您的 Amazon 凭证连接 Amazon SNS,并使用 CreatePlatformEndpoint API 调用上载令牌信息。将返回新创建的终端节点 Amazon Resource Name (ARN),服务器可以存储该终端节点以便对 Amazon SNS 进行后续的发布调用。