我如何在 Amazon SNS 中创建 Android 平台应用程序来发送推送通知?

2 分钟阅读
0

我想在 Amazon Simple Notification Service(Amazon SNS)中创建一个平台应用程序,用于向 Android 设备发送推送通知。

解决方法

Amazon SNS 推送通知并非在所有 AWS 区域都可用。有关详细信息,请参阅移动应用程序支持的区域

先决条件:您必须有 Firebase 项目以及已向 Firebase 注册的有效 Android 应用。有关说明,请参阅 Firebase 网站上的步骤 1: 创建 Firebase 项目并注册应用。您还必须拥有来自 Firebase Cloud Messaging (FCM) 的有效凭证,包括 FCM 项目令牌凭证。

检索您的 FCM 项目的令牌凭证

完成以下步骤:

  1. 打开 Firebase 控制台,然后选择您的项目。
  2. 在导航窗格中,选择齿轮图标,然后选择 Project settings(项目设置)。
  3. 选择 Service accounts(服务账户)选项卡。
  4. 选择 Generate new private key(生成新私钥)以下载 JSON 格式的私钥文件,以创建具有基于令牌的身份验证的 Android 平台应用程序。

创建 Android 平台应用程序

创建新的平台应用程序时,选择基于令牌的身份验证,以允许 Amazon SNS 使用 Google FCM HTTP v1 API。如果您的平台应用程序使用已弃用的旧版 FCM API,请升级您的应用程序以使用基于令牌的身份验证。有关详细信息,请参阅 Firebase 网站上的从旧版 FCM API 迁移到 HTTP v1

您可以使用 Amazon SNS 控制台、AWS 命令行界面 (AWS CLI) 或 Amazon SNS API 来创建平台应用程序。

使用 Amazon SNS 控制台

要使用 Amazon SNS 控制台,请参阅创建平台应用程序

对于 Push notification platform(推送通知平台),选择 Firebase Cloud Messaging (FCM)。对于 Authentication method(身份验证方法),选择 Token(令牌)。然后,选择 Choose file(选择文件)以上传 JSON 格式的私钥文件。

使用 AWS CLI

**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

完成以下步骤:

  1. 您的文件必须采用字符串格式,并且不能使用特殊字符。要格式化该文件,请从 JSON 格式的私钥文件所在的同一目录中运行以下命令:

    SERVICE_JSON=`jq @json <<< cat "private_key_JSON_file"`

    **注意:**将 private_key_JSON_file 替换为您的私钥文件名。

  2. 在密钥文件所在的同一目录下运行 create-platform-application 命令:

    aws sns create-platform-application --name Your_Application_Name --platform GCM --attributes PlatformCredential=$SERVICE_JSON

    **注意:**将 Your_Application_Name 替换为您的应用程序的名称。
    您的平台应用程序的 ARN 显示在命令的输出中。
    示例:

    {    
        "PlatformApplicationArn": "arn:aws:sns:us-east-1:XXXXXXXXXXXX:app/GCM/Your_Application_Name"    
    }
  3. 最佳做法是设置事件通知传输状态日志记录

使用 Amazon SNS API

使用 CreatePlatformApplication API 操作。

发送推送通知

要使用 Android 平台应用程序发送推送通知,请参阅移动推送通知

相关信息

如何使用 Amazon Web Services CLI 在 Amazon SNS 中创建用于发送推送通知的 APN 平台应用程序?

Adding device tokens or registration IDs

Publishing to a mobile device

Publishing to a topic

Platform response codes

AWS 官方
AWS 官方已更新 6 个月前