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

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

添加设备令牌或注册 IDs

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

您可以添加设备令牌和注册 IDs 至 Amazon SNS 采用以下方法:

  • 使用 AWS 管理控制台 向 AWS 手动添加单一令牌

  • 使用 AWS 管理控制台 将现有令牌从 CSV 文件迁移到 AWS

  • 使用 CreatePlatformEndpoint API 上传多个令牌

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

手动添加设备令牌或注册 ID

  1. 登录到 Amazon SNS 控制台

  2. 选择 Apps (应用程序),再选择您的应用程序,然后选择 Add Endpoints (添加终端节点)

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

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

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

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

从 CSV 文件将现有令牌迁移到 AWS

您可以迁移 CSV 文件中包含的现有令牌。这类 CSV 文件不能大于 2MB。迁移多个令牌时,建议您使用 CreatePlatformEndpoint API。CSV 文件中的每个令牌后都必须换行。举例来说,您的 CSV 文件看起来应如下所示:

amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz01,"User data with spaces requires quotes" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz04,"Data,with,commas,requires,quotes" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz02,"Quoted data requires ""escaped"" quotes" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz03,"{""key"": ""json is allowed"", ""value"":""endpoint"", ""number"": 1}" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz05,SimpleDataNoQuotes amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz06,"The following line has no user data" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz07 APBTKzPGlCyT6E6oOfpdwLpcRNxQp5vCPFiFeru9oZylc22HvZSwQTDgmmw9WdNlXMerUPxmpX0w1,"Different token style"
  1. 登录到 Amazon SNS 控制台

  2. 选择 Apps (应用程序),再选择您的应用程序,然后选择 Add Endpoints (添加终端节点)

  3. 依次选择 Migrate existing tokens over to AWS (将现有令牌迁移到 AWS)选择文件,选择您的 CSV 文件,然后选择添加终端节点

使用 CreatePlatformEndpoint API 上传多个令牌

以下步骤显示了如何使用Java应用程序示例(bulkupload 包裹)由 AWS 上传几个令牌(设备令牌或注册 IDs)至 Amazon SNS. 您可以使用本示例应用帮助您开始上传现有令牌。

注意

下面的步骤使用 Eclipse Java IDE。这些步骤假定您已经安装 AWS SDK for Java,并且您 AWS 账户拥有 AWS 安全凭证。有关更多信息,请参阅AWS SDK for Java。有关凭证的更多信息,请参阅 如何获取安全凭证?AWS General Reference.

  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控制台的STDOUT日志,其中包含类似于以下内容的内容:

    <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 注册的终端节点的完整列表。

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