移动应用属性 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

移动应用属性

Amazon Simple Notification Service (Amazon SNS) 支持记录推送通知消息的传输状态。配置应用程序属性以后,将针对从 Amazon SNS 发送到移动终端节点的消息向 CloudWatch Logs 发送日志条目。记录消息传输状态有助于提供更好的业务洞察力,例如以下方面:

  • 了解推送通知消息是否已从 Amazon SNS 传输到推送通知服务。

  • 识别从推送通知服务发送到 Amazon SNS 的响应。

  • 确定消息停留时间(发布时间戳与将消息转交给推送通知服务之间的时间差)。

要配置用于消息传输状态的应用程序属性,您可以使用Amazon Web Services Management Console、Amazon软件开发工具包 (SDK) 或查询 API。

使用 Amazon Web Services Management Console配置消息传输状态属性

  1. 登录到Amazon SNS 控制台

  2. 在导航面板上,指向移动,然后选择。推送通知

  3. 平台应用部分,选择包含要为其接收 CloudWatch Logs 的终端节点的应用程序。

  4. 选择 Application Actions (应用程序操作),然后选择 Delivery Status (传输状态)

  5. 传输状态对话框中,选择创建 IAM 角色

    随后您将被重定向至 IAM 控制台。

  6. 选择Allow向 Amazon SNS 授予写入权限,以代表您使用 CloudWatch Logs。

  7. 现在,回到传输状态对话框中,在抽样的成功百分比 (0-100)字段,了解您要为其接收 CloudWatch Logs 的成功发送的消息的百分比。

    注意

    配置用于消息传输状态的应用程序属性以后,所有失败的消息传输都会生成 CloudWatch Logs。

  8. 最后,选择保存配置。现在您就可以查看和分析包含消息传输状态的 CloudWatch Logs。有关使用 CloudWatch 的更多信息,请参阅CloudWatch 文档

Amazon SNS 邮件传递状态 CloudWatch 日志示例

为应用程序终端节点配置消息传输状态属性以后,将会生成 CloudWatch Logs。示例日志采用 JSON 格式,如下所示:

SUCCESS

{ "status": "SUCCESS", "notification": { "timestamp": "2015-01-26 23:07:39.54", "messageId": "9655abe4-6ed6-5734-89f7-e6a6a42de02a" }, "delivery": { "statusCode": 200, "dwellTimeMs": 65, "token": "Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9k-IBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw", "attempts": 1, "providerResponse": "{\"multicast_id\":5138139752481671853,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1422313659698010%d6ba8edff9fd7ecd\"}]}", "destination": "arn:aws:sns:us-east-2:111122223333:endpoint/FCM/FCMPushApp/c23e42de-3699-3639-84dd-65f84474629d" } }

FAILURE

{ "status": "FAILURE", "notification": { "timestamp": "2015-01-26 23:29:35.678", "messageId": "c3ad79b0-8996-550a-8bfa-24f05989898f" }, "delivery": { "statusCode": 8, "dwellTimeMs": 1451, "token": "examp1e29z6j5c4df46f80189c4c83fjcgf7f6257e98542d2jt3395kj73", "attempts": 1, "providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)", "destination": "arn:aws:sns:us-east-2:111122223333:endpoint/APNS_SANDBOX/APNSPushApp/986cb8a1-4f6b-34b1-9a1b-d9e9cb553944" } }

有关推送通知服务响应代码的列表,请参阅平台响应代码

使用 Amazon 开发工具包配置消息传输状态属性

这些区域有:Amazon软件开发工具包提供了多种语言的 API,以便将消息传输状态属性用于 Amazon SNS。

下面的 Java 示例显示了如何使用 SetPlatformApplicationAttributes API 为推送通知消息的消息传输状态配置应用程序属性。您可以对消息传输状态使用以下属性:SuccessFeedbackRoleArnFailureFeedbackRoleArnSuccessFeedbackSampleRate。这些区域有:SuccessFeedbackRoleArnFailureFeedbackRoleArn属性用于授予 Amazon SNS 写入权限,以代表您使用 CloudWatch Logs。SuccessFeedbackSampleRate 属性用于指定成功传输消息的采样率百分比 (0-100)。配置FailureFeedbackRoleArn属性,则所有失败的消息传输都会生成 CloudWatch Logs。

SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest = new SetPlatformApplicationAttributesRequest(); Map<String, String> attributes = new HashMap<>(); attributes.put("SuccessFeedbackRoleArn", "arn:aws:iam::111122223333:role/SNS_CWlogs"); attributes.put("FailureFeedbackRoleArn", "arn:aws:iam::111122223333:role/SNS_CWlogs"); attributes.put("SuccessFeedbackSampleRate", "5"); setPlatformApplicationAttributesRequest.withAttributes(attributes); setPlatformApplicationAttributesRequest.setPlatformApplicationArn("arn:aws:sns:us-west-2:111122223333:app/FCM/FCMPushApp"); sns.setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest);

有关 SDK for Java 的更多信息,请参阅。入门Amazon SDK for Java

平台响应代码

下面是推送通知服务响应代码链接列表:

推送通知服务 响应代码
Amazon Device Messaging (ADM) 请参阅响应格式在 ADM 文档中。
Apple Push Notification Service (APN) 请参阅HTTP/2 来自 APN 的响应与 APN 通信中的Local and Remote 编程指南
Firebase Cloud Messaging (FCM) 请参阅 Firebase Cloud Messaging 文档中的下游消息错误响应代码
微软推送通知服务适用于 Windows 电话 (MPNS) 请参阅 Windows 8 开发文档中的 Windows Phone 8 的推送通知服务响应代码
Windows 推送通知服务 (WNS) 请参阅 Windows 8 开发文档中推送通知服务请求和响应标头(Windows 运行时应用程序)中的“响应代码”。