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

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

当您首次向通知服务 [如 Apple Push Notification Service(APNs)和 Firebase Cloud Messaging(FCM)] 注册应用程序或移动设备时,会从通知服务返回设备令牌或注册 ID。这些令牌/ID 会被添加到 Amazon SNS,用来利用 PlatformApplicationArn API 该应用和设备创建一个端点。端点创建完成后,系统会返回一个 EndpointArn,Amazon SNS 就会使用它将通知发送到对应的应用程序或设备。

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

  • 通过 Amazon Web Services 管理控制台 手动添加单一令牌

  • 使用 CreatePlatformEndpoint API 上传多个令牌

  • 为未来的设备注册令牌

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

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

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

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

  5. Endpoint Token(端点令牌)框中,输入令牌注册 ID,具体取决于您使用的通知服务(例如,FCM 注册 ID)。

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

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

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

使用 CreatePlatformEndpoint API 上传多个令牌

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

注意

下面的步骤使用 Eclipse Java IDE。这些步骤假定您已经安装 适用于 Java 的 Amazon SDK,并且您的 Amazon Web Services 账户 拥有 Amazon 安全凭证。有关更多信息,请参阅 适用于 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 应用程序,将令牌上传至 Amazon SNS。成功上传的令牌将记录在 goodTokens.csv 中,而格式错误的令牌将记录在 badTokens.csv 中。

为未来的应用程序安装注册设备令牌

您可以通过以下两个选项来执行此操作:

使用 Amazon Cognito 服务

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

要跟踪应用程序注册,可以使用 Amazon SNS 事件在创建了新的端点 ARN 时接收通知。

或者,您可以使用 ListEndpointByPlatformApplication API 检索已注册的端点列表。

使用代理服务器

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

Amazon SNS 创建的端点 ARN 将被返回,并可由您的服务器存储起来,以便未来发布消息时使用。