将设备令牌与 Amazon SNS 集成以发送移动通知 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将设备令牌与 Amazon SNS 集成以发送移动通知

当您首次使用通知服务(例如 Apple 推送通知服务 (APNs) 和 Firebase Cloud Messaging (FCM))注册应用程序和移动设备时,该服务会返回设备令牌或注册 IDs 信息。这些令牌/ IDs 将添加到 Amazon SNS 中,以便使用 API 为应用程序和设备创建终端节点。PlatformApplicationArn创建终端节点后,将返回一个 EndpointArn,Amazon SNS 使用该终端节点将通知定向到正确的应用程序/设备。

您可以通过以下方式向 Amazon SNS 添加设备令牌或注册 IDs :

  • 通过手动添加单个令牌 Amazon Web Services Management Console

  • 使用 CreatePlatformEndpoint API 上载多个令牌

  • 为 future 设备注册代币

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

  2. 在导航窗格中,选择 “推送通知”。

  3. 平台应用程序部分,选择您的应用程序,然后选择编辑。如果您尚未创建平台应用程序,请立即按照创建 Amazon SNS 平台应用程序指南进行创建。

  4. 选择 Create Endpoint(创建端点)。

  5. 终端节点令牌框中,根据您使用的通知服务(例如,FCM 注册 ID),输入令牌或注册 ID。

  6. (可选)在 “用户数据” 字段中输入其他数据。此数据必须采用 UTF-8 编码且小于 2 KB。

  7. 选择 Create Endpoint(创建端点)。

创建终端节点后,您可以直接向移动设备或订阅 Amazon SNS 主题的移动设备发送消息。

使用 CreatePlatformEndpoint API 上传多个令牌

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

注意

下面的步骤使用 Eclipse Java IDE。这些步骤假设您已安装 适用于 Java 的 Amazon SDK 并且拥有自己的 Amazon 安全证书 Amazon Web Services 账户。有关更多信息,请参阅 适用于 Java 的 Amazon SDK。有关证书的更多信息,请参阅 IAM 用户指南中的Amazon 安全证书

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

  2. 在 Eclipse 中创建一个新的 Java 项目,然后将该SNSSamples文件夹导入到该项目中。

  3. 下载 OpenCSV 库并将其添加到构建路径中。

  4. BulkUpload.properties文件中,指定以下内容:

    • 您的ApplicationArn(平台应用程序 ARN)。

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

    • 记录成功和失败令牌的文件名。例如,goodTokens.csvbadTokens.csv

    • (可选)分隔符、引号字符和要使用的线程数的配置。

    完成后的 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
  5. 运行 BatchCreatePlatformEndpointSample.java 应用程序将令牌上传到亚马逊 SNS。成功上传的令牌将被登录goodTokens.csv,而格式错误的令牌将被登录。badTokens.csv

从设备上注册令牌以备将来安装应用程序

对于此过程,您有两种选择:

使用亚马逊 Cognito 服务

您的移动应用程序可以使用临时安全证书来创建终端节点。建议使用 Amazon Cognito 来生成临时证书。有关更多信息,请参阅 Amazon Cognito 开发者指南

要跟踪应用程序注册,请在创建新的 ARNs 终端节点时使用 Amazon SNS 事件接收通知。

或者,您可以使用 ListEndpointByPlatformApplicationAPI 检索已注册的终端节点列表。

使用代理服务器

如果您的应用程序基础架构已支持在安装时注册设备,则可以将服务器用作代理。它将通过 API 将设备令牌转发给亚马逊 SNS。CreatePlatformEndpoint

Amazon SNS 创建的终端节点 ARN 将被返回,并可由您的服务器存储以备将来发布消息。