

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

# 移动应用程序的 Amazon SNS 应用程序事件通知
<a name="application-event-notifications"></a>

Amazon SNS 提供在发生特定应用程序事件时触发通知的支持。然后，您可以对该事件采取一些编程操作。您的应用程序必须支持推送通知服务，例如 Apple 推送通知服务 (APNs)、Firebase 云消息 (FCM) 和 Windows 推送通知服务 (WNS)。您可以使用 Amazon SNS 控制台设置应用程序事件通知 AWS CLI，或者。 AWS SDKs

## 可用应用程序事件
<a name="application-event-notifications-events"></a>

应用程序事件通知跟踪各个平台端点何时创建、删除、更新以及出现传输故障。以下是应用程序事件的属性名称。


| 属性名称 | 通知触发器 | 
| --- | --- | 
| EventEndpointCreated | 向应用程序添加新的平台端点。 | 
| EventEndpointDeleted | 删除与应用程序关联的任何平台端点。 | 
| EventEndpointUpdated | 与应用程序关联的平台端点的任何属性发生更改。 | 
| EventDeliveryFailure | 向与应用程序关联的任何平台端点的传输操作发生永久性故障。 要跟踪平台应用程序端的传输故障，需要为应用程序订阅消息传输状态事件。有关更多信息，请参阅[使用用于消息传输状态的 Amazon SNS 应用程序属性](https://docs.aws.amazon.com/sns/latest/dg/sns-msg-status.html)。  | 

您可以将任何属性与应用程序关联，然后应用程序就可以接收这些事件通知。

## 发送移动推送通知
<a name="application-event-notifications-howto-set"></a>

要发送应用程序事件通知，您需要为每种事件类型指定用于接收通知的主题。Amazon SNS 发送通知时，主题可以将它们路由至将采取编程操作的终端节点。

**重要**  
高容量应用程序将创建大量的应用程序事件通知（例如，数万条），这会“淹没”供人们使用的端点，例如电子邮件、电话号码和移动应用程序。在向主题发送应用程序事件通知时，需要考虑以下指导原则：  
每个接收通知的主题都应仅包含对编程终端节点（例如 HTTP 或 HTTPS 终端节点、Amazon SQS 队列或 AWS Lambda 函数）的订阅。
要减少通知触发的处理量，请将每个主题的订阅数限制在很小的数目（例如，五个或更少）。

您可以使用 Amazon SNS 控制台、 AWS Command Line Interface (AWS CLI) 或，发送应用程序事件通知。 AWS SDKs

### AWS 管理控制台
<a name="application-event-notifications-howto-set-console"></a>

1. 登录 [Amazon SNS 控制台](https://console.aws.amazon.com/sns/home)。

1. 在导航面板中，选择**移动**，**推送通知**。

1. 在**移动推送通知**页面上的**平台应用程序**部分中，选择应用程序，然后选择**编辑**。

1. 展开**事件通知**部分。

1. 依次选择**操作**和**配置事件**。

1. 输入 ARNs 要用于以下事件的主题：
   + 已创建端点
   + 已删除端点
   + 已更新端点
   + 传输失败

1. 选择**保存更改**。

### AWS CLI
<a name="awscli"></a>

运行 [set-platform-application-attributes](https://docs.aws.amazon.com/cli/latest/reference/sns/set-platform-application-attributes.html) 命令。

以下示例为全部四个应用程序事件设置相同的 Amazon SNS 主题：

```
aws sns set-platform-application-attributes
--platform-application-arn arn:aws:sns:us-east-1:12345EXAMPLE:app/FCM/MyFCMPlatformApplication
--attributes EventEndpointCreated="arn:aws:sns:us-east-1:12345EXAMPLE:MyFCMPlatformApplicationEvents",
EventEndpointDeleted="arn:aws:sns:us-east-1:12345EXAMPLE:MyFCMPlatformApplicationEvents",
EventEndpointUpdated="arn:aws:sns:us-east-1:12345EXAMPLE:MyFCMPlatformApplicationEvents",
EventDeliveryFailure="arn:aws:sns:us-east-1:12345EXAMPLE:MyFCMPlatformApplicationEvents"
```

### AWS SDKs
<a name="application-event-notifications-sdk"></a>

通过使用软件开发工具包向 Amazon SNS API 提交`SetPlatformApplicationAttributes`请求来设置应用程序事件通知。 AWS 

有关 AWS SDK 开发者指南和代码示例的完整列表，包括入门帮助和有关先前版本的信息，请参阅[将 Amazon SNS 与软件开发工具包配合使用 AWS](sdk-general-information-section.md)。