

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SNS モバイルアプリの属性
<a name="sns-msg-status"></a>

Amazon Simple Notification Service (Amazon SNS) では、プッシュ通知メッセージの配信ステータスの記録がサポートされています。アプリケーション属性を設定した後、Amazon SNS からモバイルエンドポイントに送信されたメッセージのログエントリが CloudWatch Logs に送信されます。メッセージの配信ステータスを記録することは、以下のように運用をよりよく把握するのに役立ちます。
+ プッシュ通知メッセージが Amazon SNS からプッシュ通知サービスに配信されたかどうかがわかります。
+ プッシュ通知サービスから Amazon SNS に送信されたレスポンスを特定します。
+ メッセージのドウェル時間 (発行のタイムスタンプからプッシュ通知サービスへの配信直前までの時間) を決定します。

 メッセージ配信ステータスのアプリケーション属性を設定するには、、 AWS ソフトウェア開発キット (SDKs) AWS マネジメントコンソール、またはクエリ API を使用できます。

## を使用したメッセージ配信ステータス属性の設定 AWS マネジメントコンソール
<a name="sns-msg-console"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. ナビゲーションパネルで [**モバイル**]、[**プッシュ通知**] を選択します。

1. [**プラットフォームアプリケーション**]セクションで、CloudWatch Logs を受け取るエンドポイントを含むアプリケーションを選択します。

1. [**アプリケーションアクション**]、[**配信ステータス**] の順に選択します。

1. [**配信ステータス**] ダイアログボックスで、[**IAM ロールの作成**] を選択します。

   IAM コンソールにリダイレクトされます。

1. [**許可**] を選択して、お客様に代わって CloudWatch Logs を使用する書き込みアクセス許可を Amazon SNS に付与します。

1. ここで、**[配信ステータス]** ダイアログボックスに戻り、**[Percentage of Success to Sample (0-100)]** フィールドに、CloudWatch Logs を受信するために送信される正常なメッセージの割合を数字で入力します。
**注記**  
メッセージの配信ステータスのアプリケーション属性を設定した後は、メッセージの配信に失敗すると、必ず CloudWatch Logs が生成されます。

1. 最後に、[**設定の保存**] を選択します。これで、メッセージの配信ステータスを含む CloudWatch Logs を参照して解析できます。CloudWatch の使用方法の詳細については、「[CloudWatch のドキュメント](https://aws.amazon.com/documentation/cloudwatch)」を参照してください。

## Amazon SNS メッセージ配信ステータス CloudWatch ログの例
<a name="sns-msg-examples"></a>

アプリケーションエンドポイントのメッセージの配信ステータスの属性を設定した後は、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"
  }
}
```

プッシュ通知サービスのレスポンスコードの一覧は、「[プラットフォームのレスポンスコード](#platform-returncodes)」を参照してください。

## AWS SDKs を使用したメッセージ配信ステータス属性の設定
<a name="sns-msg-sdk"></a>

[AWS SDK](https://aws.amazon.com/tools/) には、Amazon SNS でメッセージの配信ステータスの属性を使用するための API がいくつかの言語で用意されています。

次の Java の例は、`SetPlatformApplicationAttributes` API を使用して、プッシュ通知メッセージの配信ステータスのアプリケーション属性を設定する方法を示しています。メッセージの配信ステータスには、`SuccessFeedbackRoleArn`、`FailureFeedbackRoleArn`、および `SuccessFeedbackSampleRate` の属性を使用できます。`SuccessFeedbackRoleArn` および `FailureFeedbackRoleArn` 属性は、お客様に代わって CloudWatch Logs を使用する書き込みアクセス許可を Amazon SNS に付与するために使用します。`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);
```

Java 用 SDL の詳細については、「[AWS SDK for Javaの開始方法](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html)」を参照してください。

## プラットフォームのレスポンスコード
<a name="platform-returncodes"></a>

以下は、プッシュ通知サービスのレスポンスコードへのリンクの一覧です。


****  

| プッシュ通知サービス | レスポンスコード | 
| --- | --- | 
| Amazon Device Messaging (ADM) | ADM のドキュメント の「[レスポンスの形式](https://developer.amazon.com/docs/adm/send-message.html#response-format)」を参照してください。 | 
| Apple Push Notification Service (APNS) | 『ローカルおよびリモート通知プログラミングガイド』の「[APN との通信](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#/apple_ref/doc/uid/TP40008194-CH11-SW1)におけるAPN からの HTTP/2 レスポンス」を参照してください。 | 
| Firebase Cloud Messaging (FCM) | Firebase Cloud Messaging ドキュメントの「[Downstream Message Error Response Codes](https://firebase.google.com/docs/cloud-messaging/http-server-ref#error-codes)」を参照してください。 | 
| Windows Phone (MPNS) 用 Microsoft Push Notification Service (MPNS) | Windows 8 開発ドキュメントの「[Push Notification Service Response Codes for Windows Phone 8](https://msdn.microsoft.com/en-us/library/windows/apps/ff941100%28v=vs.105%29.aspx#BKMK_PushNotificationServiceResponseCodes)」を参照してください。 | 
| Windows Push Notification Services (WNS) | Windows 8 開発ドキュメントで「[Push Notification Service Request and Response Headers (Windows Runtime Apps)](https://msdn.microsoft.com/en-us/library/windows/apps/hh465435.aspx)」の「Response codes」を参照してください。 | 