

이제 AWS Mobile SDK for Unity가에 포함됩니다 AWS SDK for .NET. 이 가이드에서는 Mobile SDK for Unity의 아카이브 버전을 참조합니다. 자세한 내용은 [ AWS Mobile SDK for Unity란 무엇입니까?](what-is-unity-plugin.md) 섹션을 참조하세요.

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

# Amazon Simple Notification Service
<a name="sns"></a>

Amazon Simple Notification Service(SNS)와 Unity SDK를 사용하여 모바일 푸시 알림을 수신할 수 있는 iOS 및 Android 앱을 작성할 수 있습니다. SNS에 대한 자세한 내용은 [Amazon Simple Notification Service](https://aws.amazon.com/sns/)를 참조하세요.

이 주제에서는 Unity용 AWS SDK 샘플 앱 SNSExample.unity가 Amazon SNS를 통해 모바일 푸시 알림을 수신하도록 구성하는 방법을 살펴봅니다.

SNSExample.unity 샘플을 사용해 iOS 및 Android 앱을 모두 작성할 수 있습니다. iOS와 Android는 구성 단계가 서로 다르므로 아래에서 목표로 하는 플랫폼에 해당하는 단원을 읽으시기 바랍니다.

## 사전 조건
<a name="prerequisites"></a>

이 솔루션을 사용하려면 다음과 같은 사전 조건이 필요합니다.

### SNS에 대한 권한 설정
<a name="set-permissions-for-sns"></a>

Cognito 자격 증명 풀을 생성하면 2개의 IAM 역할이 생성됩니다.
+ Cognito/\$1<Identity-Pool-Name>Auth\$1DefaultRole - 인증된 사용자에 대한 기본 IAM 역할
+ Cognito/\$1<Identity-Pool-Name>Unauth\$1DefaultRole - 인증되지 않은 사용자에 대한 기본 IAM 역할

이러한 역할에 Amazon SNS 서비스를 액세스할 수 있는 권한을 추가해야 합니다. 방법:

1. [IAM 콘솔](https://console.aws.amazon.com/iam/home)로 이동하여 구성할 IAM 역할을 선택합니다.

1. **정책 연결**을 클릭하고 AmazonSNSFullAccess 정책을 선택한 다음 **정책 연결**을 클릭합니다.

**참고**  
AmazonSNSFullAccess를 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 여기서는 빠르게 실행할 수 있도록 사용하는 것입니다. IAM 역할 권한 지정에 대한 자세한 내용은 [IAM 역할 권한 개요](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_permissions.html)를 참조하세요.

### iOS 사전 조건
<a name="ios-prerequisites"></a>
+ Apple iOS 개발자 프로그램 멤버십
+ 서명 자격 증명 생성
+ 푸시 알림용으로 구성된 프로비저닝 프로파일 생성

푸시 알림을 수신하려면 물리적 디바이스에서 앱을 실행해야 합니다. 디바이스에서 앱을 실행하려면 [Apple iOS 개발자 프로그램 멤버십](https://developer.apple.com/programs/ios/)이 있어야 합니다. 멤버십이 있으면 Xcode를 사용하여 서명 자격 증명을 생성할 수 있습니다. 자세한 내용은 Apple의 [App Distribution Quick Start](https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013839) 설명서를 참조하세요. 다음에는 푸시 알림용으로 구성된 프로비저닝 프로파일이 필요합니다. 자세한 내용은 Apple의 [Configuring Push Notifications](https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html#//apple_ref/doc/uid/TP40012582-CH32-SW1) 설명서를 참조하십시오.

### Android 사전 조건
<a name="android-prerequisites"></a>
+ Android SDK 설치
+ JDK 설치
+ android-support-v4.jar
+ google-play-services.jar

## iOS용 Unity 샘플 앱 구성
<a name="configuring-the-unity-sample-app-for-ios"></a>

Unity 편집기를 열고 새 프로젝트를 생성합니다. **자산**/**패키지 가져오기**/**사용자 지정 패키지**를 선택하고 aws-unity-sdk-sns-2.0.0.1.unitypackage를 선택하여 AWS SDK for Unity 패키지를 가져옵니다. **패키지 가져오기** 대화 상자의 모든 항목이 선택되었는지 확인하고 **가져오기**를 클릭합니다.

### Unity 구성
<a name="unity-configuration"></a>

Unity 프로젝트를 구성하려면 다음 단계를 수행합니다.

1. **프로젝트** 창에서 **자산**/**AWSSDK**/**예제**로 이동하여 SNSExample 장면을 엽니다.

1. **계층** 창에서 SNSExample을 선택합니다.

1. **인스펙터** 창에서 Cognito 자격 증명 풀 ID를 지정합니다.

1. **iOS 플랫폼 애플리케이션 ARN**을 입력하기 위한 텍스트 상자가 있습니다. 이 정보는 나중에 생성합니다.

1. **파일**/**빌드 설정**을 선택하고 **빌드 설정** 대화 상자에서 **빌드 내 장면** 목록 상자 아래에 있는 **현재 추가** 버튼을 클릭하여 현재 장면을 빌드에 추가합니다.

1. **플랫폼** 아래에서 **iOS**를 선택하고 **플레이어 설정...** 버튼을 클릭합니다. Unity 편집기의 **인스펙터 창**에서 iPhone 아이콘을 클릭하고 아래로 스크롤하여 **식별** 섹션에서 **번들 식별자**를 지정합니다.

### iOS 구성
<a name="ios-configuration"></a>

다음 단계를 수행하여 샘플에서 iOS 고유 설정을 구성합니다.

1. 웹 브라우저에서 [Apple Developer Member Center](https://developer.apple.com/membercenter/index.action)로 이동하여 **인증서, 식별자 및 프로파일**을 클릭합니다.

1. **iOS 앱**에서 **식별자**를 클릭하고 웹 페이지 오른쪽 상단의 더하기 버튼을 클릭하여 새 iOS 앱 ID를 추가한 다음 앱 ID 설명을 입력합니다.

1. 아래로 스크롤하여 **ID 접미사 추가** 섹션에서 **명시적 앱 ID**를 선택하고 번들 식별자를 입력합니다.

1. 아래로 스크롤하여 **앱 서비스** 섹션에서 **푸시 알림**을 선택합니다.

1. **계속** 버튼을 클릭합니다.

1. **제출** 버튼을 클릭합니다.

1. **완료** 버튼을 클릭합니다.

1. 방금 생성한 앱 ID를 선택하고 **편집** 버튼을 클릭합니다.

1. 아래로 스크롤하여 **푸시 알림** 섹션을 찾습니다.

1. **개발 SSL 인증서** 아래의 **인증서 생성** 버튼을 클릭합니다.

1. 지침을 따라 인증서 서명 요청(CSR)을 생성하고 요청을 업로드한 다음 Apple 알림 서비스(APNS)와 통신하는 데 사용될 SSL 인증서를 다운로드합니다.

1. **인증서, 식별자 및 프로파일** 웹 페이지로 돌아가서 **프로비저닝 프로파일**에서 **모두**를 클릭합니다.

1. 오른쪽 위 모서리에 있는 더하기 버튼을 클릭하여 새 프로비저닝 프로파일을 추가합니다.

1. **iOS 앱 개발**을 선택하고 **계속** 버튼을 클릭합니다.

1. 앱 ID를 선택하고 **계속** 버튼을 클릭합니다.

1. 개발자 인증서를 선택하고 **계속** 버튼을 클릭합니다.

1. 디바이스를 선택하고 **계속** 버튼을 클릭합니다.

1. 프로파일 이름을 입력하고 **생성** 버튼을 클릭합니다.

1. 프로비전 파일을 다운로드하고 두 번 클릭하여 프로비저닝 프로파일을 설치합니다.

새 프로비저닝 프로파일을 추가한 후 Xcode에서 프로비저닝 프로파일을 새로 고쳐야 할 수 있습니다. Xcode에서

1. **Xcode**/**기본 설정** 메뉴 항목을 선택합니다.

1. **계정** 탭을 선택하고 Apple ID를 선택한 다음 **세부 정보 보기**를 클릭합니다.

1. 대화 상자의 왼쪽 아래 모서리에 있는 새로 고침 버튼을 클릭하여 프로비저닝 프로파일을 새로 고치고 새 프로파일이 표시되는지 확인합니다.

### SNS 구성
<a name="sns-configuration"></a>

1. KeyChain 액세스 앱을 실행하고 화면의 왼쪽 아래에 있는 **내 인증서**를 선택합니다. 앞서 생성한 SSL 인증서를 마우스 오른쪽 버튼으로 클릭하여 APNS에 연결하고 **내보내기**를 선택합니다. 그러면 파일의 이름과 인증서를 보호할 암호를 지정하라는 메시지가 표시됩니다. 인증서는 P12 파일로 저장됩니다.

1. 웹 브라우저에서 [SNS 콘솔](https://console.aws.amazon.com/sns/v2/home)로 이동하여 화면의 왼쪽에서 **애플리케이션**을 클릭합니다.

1. **플랫폼 애플리케이션 생성**을 클릭하여 새 SNS 플랫폼 애플리케이션을 생성합니다.

1. **애플리케이션 이름**을 입력합니다.

1. **푸시 알림 플랫폼**용 **푸시 알림 서비스 샌드박스(APNS\$1SANDBOX)**를 선택합니다.

1. **파일 선택**을 선택하고 SSL 인증서를 내보낼 때 생성한 P12 파일을 선택합니다.

1. SSL 인증서를 내보낼 때 지정한 암호를 입력하고 **파일에서 자격 증명 로드**를 클릭합니다.

1. **플랫폼 애플리케이션 생성**을 클릭합니다.

1. 방금 생성한 플랫폼 애플리케이션을 선택하고 애플리케이션 ARN을 복사합니다.

1. Unity Editor에서 프로젝트로 돌아가서 **인스펙터** 창의 **계층** 패널에서 **SNSample**을 선택한 다음 플랫폼 애플리케이션 ARN을 **iOS 플랫폼 애플리케이션 ARN**이라는 텍스트 상자에 붙여 넣습니다.

1. **파일**/**빌드 설정**를 선택하고 **빌드** 버튼을 클릭합니다. 그러면 Xcode 프로젝트가 생성됩니다.

### Xcode 사용
<a name="using-xcode"></a>

1. Xcode 프로젝트를 열고 프로젝트 탐색기에서 프로젝트를 선택합니다.

1. 번들 식별자가 올바로 설정되었는지 확인합니다.

1. Apple 개발자 계정이 **팀**에 지정되어 있는지 확인합니다. 이는 프로비저닝 프로파일이 유효하려면 필요합니다.

1. 프로젝트를 빌드하여 디바이스에서 실행합니다.

1. **알림 등록**을 누르고 **확인**을 눌러 알림을 허용합니다. 앱에 디바이스 토큰이 표시됩니다.

[SNS 콘솔](https://console.aws.amazon.com/sns/v2/home)에서 **애플리케이션**을 클릭하고 플랫폼 애플리케이션을 선택하고 **플랫폼 엔드포인트 생성**을 클릭한 다음 앱에 표시된 디바이스 토큰을 입력합니다.

이 시점에서 앱, APNS 및 NSN이 완전히 구성됩니다. 플랫폼 애플리케이션을 선택하고 엔드포인트를 선택한 다음 **엔드포인트에 게시**를 클릭하여 디바이스로 푸시 알림을 전송할 수 있습니다.

### Unity 샘플(iOS)
<a name="unity-sample-ios"></a>

이 샘플은 CognitoAWSCredentials 인스턴스를 생성하여 앱이 AWS 서비스를 직접적으로 호출하도록 허용하는 제한적 범위의 임시 보안 인증을 생성합니다. 또한 SNS와 통신하기 위한 AmazonSimpleNotificationServiceClient 인스턴스도 생성합니다. 앱에는 각각 **알림 등록** 및 **등록 취소**로 표시된 2개의 버튼이 표시됩니다.

**알림 등록** 버튼을 누르면 `RegisterDevice()` 메서드가 호출됩니다. `RegisterDevice()`는 사용할 알림 유형(알림, 소리 또는 배지)을 지정하는 `UnityEngine.iOS.NotificationServices.RegisterForNotifications`를 직접적으로 호출합니다. 또한 디바이스 토큰을 얻기 위해 APNS에 대한 비동기식 호출을 생성합니다. 정의된 콜백이 없으므로 `CheckForDeviceToken`은 직접적으로 반복적 호출되어(최대 10회) 디바이스 토큰 여부를 확인합니다.

토큰이 검색되면 `AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync()`이 직접적으로 호출되어 SNS 플랫폼 애플리케이션에 대한 엔드포인트를 생성합니다.

이제 샘플은 푸시 알림을 수신하도록 구성되었습니다. [SNS 콘솔](https://console.aws.amazon.com/sns/v2/home)로 이동하여 페이지의 왼쪽에서 **애플리케이션**을 클릭하고 플랫폼 애플리케이션을 선택하고 엔드포인트를 선택한 다음 **엔드포인트에 게시**를 클릭할 수 있습니다. 사용할 엔드포인트를 선택하고 **엔드포인트에 게시**를 클릭합니다. 텍스트 상자에 텍스트 메시지를 입력하고 **메시지 게시**를 클릭하여 메시지를 게시합니다.

## Android용 Unity 샘플 앱 구성
<a name="configuring-the-unity-sample-app-for-android"></a>

Unity 편집기를 열고 새 프로젝트를 생성합니다. **자산**/**패키지 가져오기**/**사용자 지정 패키지**를 선택하고 aws-unity-sdk-sns-2.0.0.1.unitypackage를 선택하여 AWS SDK for Unity 패키지를 가져옵니다. **패키지 가져오기** 대화 상자의 모든 항목이 선택되었는지 확인하고 **가져오기**를 클릭합니다.

### Unity 구성
<a name="id3"></a>

Unity 프로젝트를 구성하려면 다음 단계를 수행합니다.

1. **프로젝트** 창에서 **자산**/**AWSSDK**/**예제**로 이동하여 SNSExample 장면을 엽니다.

1. **계층** 창에서 SNSExample을 선택합니다.

1. **인스펙터** 창에서 Cognito 자격 증명 풀 ID를 지정합니다.

1. **Android 플랫폼 애플리케이션 ARN** 및 **Google 콘솔 프로젝트 ID**를 입력하기 위한 텍스트 상자가 있습니다. 이 정보는 나중에 생성합니다.

1. **파일**/**빌드 설정**을 선택하고, **빌드 설정** 다이얼로그에서 **빌드 내 장면** 목록 상자 아래에 있는 **현재 추가** 버튼을 클릭하여 현재 장면을 빌드에 추가합니다.

1. **플랫폼** 아래에서 **Android**를 선택하고 **플레이어 설정...** 버튼을 클릭합니다. Unity 편집기의 **인스펙터 창**에서 Android 아이콘을 클릭하고 아래로 스크롤하여 **식별** 섹션에서 **번들 식별자**를 지정합니다.

1. android-support-v4.jar 및 google-play-services.jar 파일을 **프로젝트** 창의 **자산**/**플러그인**/**Android** 디렉터리에 복사합니다.

android-support-v4.jar의 위치에 대한 자세한 내용은 [Android 지원 라이브러리 설정](https://developer.android.com/tools/support-library/setup.html)을 참조하십시오. google-play-services.jar의 위치에 대한 자세한 내용은 [Google APIs for Android Setup](https://developers.google.com/android/guides/setup)을 참조하십시오.

### Android 구성
<a name="android-configuration"></a>

먼저 새 Google API 프로젝트를 추가합니다.

1. 웹 브라우저에서 [Google 개발자 콘솔](https://console.developers.google.com)로 이동하여 **프로젝트 생성**을 클릭합니다.

1. **새 프로젝트** 상자에 프로젝트 이름을 입력하고 프로젝트 번호(나중에 필요함)를 기록한 다음 **생성**을 클릭합니다.

그런 다음 프로젝트에서 Google Cloud Messaging(GCM) 서비스를 활성화합니다.

1. Google 개발자 콘솔에서 새 프로젝트가 이미 선택되어 있을 것입니다. 그렇지 않다면 페이지 상단의 드롭다운 목록에서 선택합니다.

1. 페이지 왼쪽의 사이드바에서 **API 및 인증**을 선택합니다.

1. 검색 상자에서 "Google Cloud Messaging for Android"를 입력하고 아래의 **Google Cloud Messaging for Android** 링크를 클릭합니다.

1. **API 활성화**를 클릭합니다.

마지막으로 API 키를 받습니다.

1. Google 개발자 콘솔에서 **API 및 인증** > **보안 인증**을 선택합니다.

1. **퍼블릭 API 액세스** 아래에서 **새 키 생성**을 클릭합니다.

1. **새 키 생성** 대화 상자에서 **서버 키**를 클릭합니다.

1. 표시되는 대화 상자에서 **Create(생성)**을 클릭하고 표시된 API 키를 복사합니다.

나중에 API 키를 사용해 인증을 수행합니다.

### SNS 구성
<a name="id4"></a>

1. 웹 브라우저에서 [SNS 콘솔](https://console.aws.amazon.com/sns/v2/home)로 이동하여 화면의 왼쪽에서 **애플리케이션**을 클릭합니다.

1. **플랫폼 애플리케이션 생성**을 클릭하여 새 SNS 플랫폼 애플리케이션을 생성합니다.

1. **애플리케이션 이름**을 입력합니다.

1. **푸시 알림 플랫폼**으로 **Google 클라우드 메시징(GCM)**을 선택합니다.

1. API 키를 **API 키**로 표시된 텍스트 상자에 붙여 넣습니다.

1. **플랫폼 애플리케이션 생성**을 클릭합니다.

1. 방금 생성한 플랫폼 애플리케이션을 선택하고 애플리케이션 ARN을 복사합니다.

1. Unity 에디터에서 프로젝트로 돌아가서 **인스펙터** 창의 **계층** 패널에서 **SNSexample**을 선택하고 플랫폼 애플리케이션 ARN을 **Android 플랫폼 애플리케이션 ARN**이라는 레이블이 붙은 텍스트 상자에 붙여 넣고 프로젝트 번호를 **Google 콘솔 프로젝트 ID**라고 표시된 텍스트 상자에 붙여 넣습니다.

1. Android 디바이스를 컴퓨터에 연결하고 **파일**/**빌드 설정**을 선택한 다음 **빌드 및 실행**을 클릭합니다.

### Unity 샘플(Android)
<a name="unity-sample-android"></a>

이 샘플은 CognitoAWSCredentials 인스턴스를 생성하여 앱이 AWS 서비스를 호출하도록 허용하는 제한적 범위의 보안 인증 증명을 생성합니다. 또한 SNS와 통신하기 위한 AmazonSimpleNotificationServiceClient 인스턴스도 생성합니다.

앱에는 각각 **알림 등록** 및 **등록 취소**로 표시된 2개의 버튼이 표시됩니다. **알림 등록** 버튼을 누르면 `RegisterDevice()` 메서드가 호출됩니다. `RegisterDevice()`는 앱을 GCM에 등록하는 `GCM.Register`를 호출합니다. GCM은 예제 코드 내부에서 정의되는 클래스로, 앱을 GCM에 등록하기 위한 비동기식 호출을 생성합니다.

콜백이 호출되면 `AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync`이 직접적으로 호출되어 SNS 메시지를 수신할 플랫폼 엔드포인트를 생성합니다.

이제 샘플은 푸시 알림을 수신하도록 구성되었습니다. [SNS 콘솔](https://console.aws.amazon.com/sns/v2/home)로 이동하여 페이지의 왼쪽에서 **애플리케이션**을 클릭하고 플랫폼 애플리케이션을 선택하고 엔드포인트를 선택한 다음 **엔드포인트에 게시**를 클릭할 수 있습니다. 사용할 엔드포인트를 선택하고 **엔드포인트에 게시**를 클릭합니다. 텍스트 상자에 텍스트 메시지를 입력하고 **메시지 게시**를 클릭하여 메시지를 게시합니다.