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

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

添加设备令牌或注册 ID

当您首次向通知服务(如 Apple Push Notification Service (APN) 和 Firebase Cloud Messaging (FCM))注册应用程序和移动设备时,会从通知服务返回设备令牌或注册 ID。向 Amazon SNS 添加设备令牌或注册 ID 时,会将它们与PlatformApplicationArnAPI 为应用程序和设备创建终端节点。当 Amazon SNS 创建终端节点时,EndpointArn返回。这些区域有:EndpointArn了解 Amazon SNS 如何知道要向哪个应用程序和移动设备发送通知消息的。

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

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

  • 使用 Amazon Web Services Management Console 将现有令牌从 CSV 文件迁移到 Amazon

  • 使用 CreatePlatformEndpoint API 上传多个令牌

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

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

  1. 登录到Amazon SNS 控制台

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

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

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

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

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

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

您可以迁移 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. 选择将现有令牌迁移到Amazon中,选择选择文件,选择 CSV 文件,然后选择添加终端节点

使用 CreatePlatformEndpoint API 上传多个令牌

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

注意

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

  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 文件位置的绝对路径。

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

    • (可选)用于指定包含令牌的 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 事件。您也可以使用ListEndpointByPlatformApplicationAPI 获取向 Amazon SNS 注册的终端节点的完整列表。

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