本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将设备令牌与 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
-
登录 Amazon SNS 控制台
。 -
在导航窗格中,选择 “推送通知”。
-
在平台应用程序部分,选择您的应用程序,然后选择编辑。如果您尚未创建平台应用程序,请立即按照创建 Amazon SNS 平台应用程序指南进行创建。
-
选择 Create Endpoint(创建端点)。
-
在终端节点令牌框中,根据您使用的通知服务(例如,FCM 注册 ID),输入令牌或注册 ID。
-
(可选)在 “用户数据” 字段中输入其他数据。此数据必须采用 UTF-8 编码且小于 2 KB。
-
选择 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
-
下载并解压缩 snsmobilepush.zip 文件。
-
在 Eclipse 中创建一个新的 Java 项目,然后将该
SNSSamples
文件夹导入到该项目中。 -
下载 OpenCSV 库
并将其添加到构建路径中。 -
在
BulkUpload.properties
文件中,指定以下内容:-
您的
ApplicationArn
(平台应用程序 ARN)。 -
包含令牌的 CSV 文件的绝对路径。
-
记录成功和失败令牌的文件名。例如,
goodTokens.csv
和badTokens.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
-
-
运行 BatchCreatePlatformEndpointSample.java 应用程序将令牌上传到亚马逊 SNS。成功上传的令牌将被登录
goodTokens.csv
,而格式错误的令牌将被登录。badTokens.csv
从设备上注册令牌以备将来安装应用程序
对于此过程,您有两种选择:
- 使用亚马逊 Cognito 服务
-
您的移动应用程序可以使用临时安全证书来创建终端节点。建议使用 Amazon Cognito 来生成临时证书。有关更多信息,请参阅 Amazon Cognito 开发者指南
要跟踪应用程序注册,请在创建新的 ARNs 终端节点时使用 Amazon SNS 事件接收通知。
或者,您可以使用
ListEndpointByPlatformApplication
API 检索已注册的终端节点列表。 - 使用代理服务器
-
如果您的应用程序基础架构已支持在安装时注册设备,则可以将服务器用作代理。它将通过 API 将设备令牌转发给亚马逊 SNS。
CreatePlatformEndpoint
Amazon SNS 创建的终端节点 ARN 将被返回,并可由您的服务器存储以备将来发布消息。