

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 플랫폼별 페이로드를 사용하여 Amazon SNS 알림 게시
<a name="sns-send-custom-platform-specific-payloads-mobile-devices"></a>

 AWS Management Console 또는 Amazon SNS APIs를 사용하여 플랫폼별 페이로드가 포함된 사용자 지정 메시지를 모바일 디바이스로 전송할 수 있습니다. Amazon SNS API 사용에 대한 자세한 내용은 [모바일 푸시 API 작업](mobile-push-api.md) 및 `[snsmobilepush.zip](samples/snsmobilepush.zip)`의 `SNSMobilePush.java` 파일을 참조하세요.

## JSON 형식 메시지 전송 중
<a name="mobile-push-send-json"></a>

플랫폼별 페이로드를 전송할 때 데이터는 JSON 키-값 쌍 문자열 형식이어야 하며, 따옴표가 이스케이프되어 있어야 합니다.

다음 예제는 FCM 플랫폼에 대한 사용자 지정 메시지를 보여줍니다.

```
{
"GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"Hello\", \"body\": \"This is a test.\"}, \"data\": {\"dataKey\": \"example\"}}}}"
}
```

## 플랫폼별 메시지 전송 중
<a name="mobile-push-send-platform"></a>

사용자 지정 데이터를 키-값 쌍으로 전송할 수 있을 뿐 아니라, 플랫폼별 키-값 쌍을 전송할 수도 있습니다.

FCM `data` 파라미터에서 사용자 지정 데이터 키-값 쌍 뒤에 FCM 파라미터 `time_to_live` 및 `collapse_key`가 포함되어 있음을 보여줍니다.

```
{
"GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"TitleTest\", \"body\": \"Sample message for Android or iOS endpoints.\"}, \"data\":{\"time_to_live\": 3600,\"collapse_key\":\"deals\"}}}}"
}
```

Amazon SNS에서 지원하는 각 푸시 알림 서비스에서 지원되는 키-값 쌍 목록은 다음을 참조하세요.

**중요**  
Amazon SNS는 이제 Android 디바이스로 모바일 푸시 알림을 보내기 위해 Firebase Cloud Messaging(FCM) HTTP v1 API를 지원합니다.  
2024년 3월 26일 - Amazon SNS는 Apple 디바이스 및 Webpush 대상에 대한 FCM HTTP v1 API를 지원합니다. 애플리케이션 중단을 방지하려면 2024년 6월 1일 또는 그 이전에 기존 모바일 푸시 애플리케이션을 최신 FCM HTTP v1 API로 마이그레이션하는 것이 좋습니다.
+ APNS 설명서의 [페이로드 키 참조](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#/apple_ref/doc/uid/TP40008194-CH17-SW1)
+ FCM 설명서의 [Firebase Cloud Messaging HTTP 프로토콜](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages)
+ ADM 설명서의 [메시지 보내기](https://developer.amazon.com/sdk/adm/sending-message.html)

## 다중 플랫폼의 애플리케이션으로 메시지 전송 중
<a name="mobile-push-send-multiplatform"></a>

FCM 및 APNS와 같은 다중 플랫폼용 디바이스에 설치된 애플리케이션에 메시지를 전송하려면 먼저 모바일 엔드포인트에서 Amazon SNS의 주제를 구독한 다음 메시지를 주제에 게시해야 합니다.

다음 예제에서는 APNS, FCM 및 ADM에서 구독 중인 모바일 엔드포인트에 전송할 메시지를 보여 줍니다.

```
{ 
  "default": "This is the default message which must be present when publishing a message to a topic. The default message will only be used if a message is not present for 
one of the notification platforms.",     
  "APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":\"www.amazon.com\"} }",
  "GCM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}",
  "ADM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}" 
}
```

## 경보 또는 백그라운드 알림으로서 메시지를 APNS로 전송
<a name="mobile-push-send-message-apns-background-notification"></a>

Amazon SNS는 `alert` 또는 `background` 알림으로 APNS에 메시지를 보낼 수 있습니다(자세한 내용은 APNS 설명서의 [앱에 백그라운드 업데이트 푸시](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app) 참조).
+ `alert` APNS 알림은 경보 메시지를 표시하거나 사운드를 재생하거나 애플리케이션 아이콘에 배지를 추가하여 사용자에게 알립니다.
+ `background` APNS 알림은 사용자에게 알리지 않고 알림의 내용을 실행하도록 애플리케이션을 가동하거나 명령합니다.

### 사용자 지정 APNS 헤더 값 지정
<a name="specify-custom-header-value"></a>

Amazon SNS `Publish` API 작업, AWS SDKs 또는를 사용하여 `AWS.SNS.MOBILE.APNS.PUSH_TYPE` [예약된 메시지 속성](sns-message-attributes.md#sns-attrib-mobile-reserved)에 대한 사용자 지정 값을 지정하는 것이 좋습니다 AWS CLI. 다음 CLI 예제는 지정된 주제에 `content-available`을 `1`로 설정하고 `apns-push-type`을 `background`로 설정합니다.

```
aws sns publish \
--endpoint-url https://sns.us-east-1.amazonaws.com \
--target-arn arn:aws:sns:us-east-1:123456789012:endpoint/APNS_PLATFORM/MYAPP/1234a567-bc89-012d-3e45-6fg7h890123i \
--message '{"APNS_PLATFORM":"{\"aps\":{\"content-available\":1}}"}' \
--message-attributes '{ \
  "AWS.SNS.MOBILE.APNS.TOPIC":{"DataType":"String","StringValue":"com.amazon.mobile.messaging.myapp"}, \
  "AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"background"}, \
  "AWS.SNS.MOBILE.APNS.PRIORITY":{"DataType":"String","StringValue":"5"}}' \
--message-structure json
```

**참고**  
JSON 구조가 유효한지 확인합니다. 마지막 키를 제외한 각 키-값 페어 뒤에 쉼표를 추가합니다.

### 페이로드에서 APNS 푸시 유형 헤더 추론
<a name="inferring-push-type-header-from-payload"></a>

`apns-push-type` APNS 헤더를 설정하지 않으면 Amazon SNS에서 JSON 형식 APNS 페이로드 구성의 `aps` 사전에 있는 `content-available` 키에 따라 헤더를 `alert` 또는 `background`로 설정합니다.

**참고**  
Amazon SNS는 `alert` 또는 `background` 헤더만 유추할 수 있지만 `apns-push-type` 헤더는 다른 값으로 설정할 수 있습니다.
+ 다음의 경우 `apns-push-type`이 `alert`로 설정됩니다.
  + `aps` 사전에 `1`로 설정된 `content-available`과 사용자 상호 작용을 트리거하는 *하나 이상의 키*가 포함되어 있는 경우.
  + `aps` 사전에 `0`으로 설정된 `content-available`이 포함되어 있거나 *또는* `content-available` 키가 없는 경우.
  + `content-available` 키의 값이 정수 또는 부울이 아닌 경우.
+ 다음의 경우 `apns-push-type`이 `background`로 설정됩니다.
  + `aps` 사전에 `1`로 설정된 `content-available`*만* 포함되어 있고 사용자 상호 작용을 트리거하는 *다른 키가 없는* 경우입니다.
**중요**  
Amazon SNS에서 APNS에 대한 원시 구성 객체를 백그라운드 전용 알림으로 전송하는 경우, `1`로 설정된 `content-available`을 `aps` 사전에 포함해야 합니다. 사용자 지정 키를 포함할 수 있지만 `aps` 사전에는 사용자 상호 작용을 트리거하는 키(예: 경보, 배지 또는 사운드)를 포함할 수 없습니다.

다음은 원시 구성 객체의 예입니다.

```
{
  "APNS": "{\"aps\":{\"content-available\":1},\"Foo1\":\"Bar\",\"Foo2\":123}"
}
```

이 예에서 Amazon SNS는 메시지에 대한 `apns-push-type` APNS 헤더를 `background`로 설정합니다. Amazon SNS는 `apn` 사전에 `1`로 설정된 `content-available` 키가 포함되어 있고 사용자 상호 작용을 트리거할 수 있는 다른 키가 포함되어 있지 않음을 감지하면 헤더를 `background`로 설정합니다.