将设备令牌与 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 管理控制台 手动添加单一令牌
-
使用
CreatePlatformEndpointAPI 上传多个令牌 -
为未来的设备注册令牌
手动添加设备令牌或注册 ID
-
登录 Amazon SNS 控制台
。 -
在导航窗格中,选择推送通知。
-
在平台应用程序部分,选择您的应用程序,然后选择编辑。如果您尚未创建平台应用程序,请按照创建 Amazon SNS 平台应用程序指南立即创建。
-
选择 Create Endpoint(创建端点)。
-
在Endpoint Token(端点令牌)框中,输入令牌或注册 ID,具体取决于您使用的通知服务(例如,FCM 注册 ID)。
-
(可选)在 User Data(用户数据)字段中输入其他数据。数据必须采用 UTF-8 编码并且小于 2KB。
-
选择 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
-
下载并解压缩 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 应用程序,将令牌上传至 Amazon SNS。成功上传的令牌将记录在
goodTokens.csv中,而格式错误的令牌将记录在badTokens.csv中。
为未来的应用程序安装注册设备令牌
您可以通过以下两个选项来执行此操作:
- 使用 Amazon Cognito 服务
-
您的移动应用程序可以使用临时安全凭证来创建端点。建议使用 Amazon Cognito 来生成临时凭证。有关更多信息,请参阅 Amazon Cognito 开发人员指南。
要跟踪应用程序注册,可以使用 Amazon SNS 事件在创建了新的端点 ARN 时接收通知。
或者,您可以使用
ListEndpointByPlatformApplicationAPI 检索已注册的端点列表。 - 使用代理服务器
-
如果您的应用程序基础架构已支持在安装时注册设备,则可以将服务器用作代理。它将通过
CreatePlatformEndpointAPI 将设备令牌转发给 Amazon SNS。Amazon SNS 创建的端点 ARN 将被返回,并可由您的服务器存储起来,以便未来发布消息时使用。