# APS 연동 (legacy)

> 설정 및 계정 설정 등 Unity 레벨플레이에서 Amazon 퍼블리셔 서비스 (APS)를 광고 네트워크로 설정합니다.

> **Important:**
>
> 다음 기술 자료는 Unity가 개발하거나, 소유하거나, 운영하지 않는 제품 또는 서비스('타사 제품')에 관한 내용입니다.
> 이 정보는 오래되었거나 불완전할 수 있으며 편의를 위해 제공됩니다.
> 타사 제품을 사용하는 경우 해당 제품의 약관이 적용됩니다.
> Unity는 이러한 제품에 대해 어떠한 보증도 하지 않으며, 타사 제공자의 콘텐츠, 광고 또는 머티리얼과 관련된 문제를 포함하여 제품 사용으로 인한 손해나 손실에 대해서도 책임지지 않습니다.

> **Note:**
>
> 이 가이드는 레거시 레벨플레이 SDK 버전(8.0.0 이상)에 적용됩니다. 버전 9.0.0 이상에 대한 최신 기술 자료는 [APS 통합](aps-v9)을 참조하십시오.

> **Note:**
>
> 이 Mediation 네트워크의 어댑터 변경 기록을 보려면 [Unity용 Mediation 네트워크](/grow/levelplay/sdk/unity/mediation-networks.md.md#integrate-network-adapters)를 참조하십시오.

## 필수 조건

Amazon 퍼블리셔 서비스(APS)는 초대만 프로그램입니다. APS를 통합하려면 레벨플레이 SDK와 APS SDK를 모두 통합하고 초기화해야 합니다. 아래에 설명된 대로 전체 연동 플로를 수행하여 애플리케이션 APS 광고를 표시해야 합니다.

## 1단계. APS 계정 생성

1. 앱 계정을 설정하려면 APS에 도달률. APS 계정을 생성하려면 [APS 웹사이트](https://aps.amazon.com/aps/contact-us/)로 이동하여 \*\* 문의하기\*\*를 선택하고 요청을 엽니다.
2. APS 요청이 승인되면 APS에 가입하고 계정을 만드는 초대 링크가 표시됩니다.
3. 레벨플레이 APS를 설정하려면 위 단계를 완료해야 합니다. 

## 2단계. APS 네트워크에서 슬롯 설정

1. 앱 메뉴에서 올바른 애플리케이션을 선택하고 **설정**을 선택합니다.
2. 수익화 서비스 설정 메뉴로 **IronSource 레벨플레이**를 선택합니다.
3. 각 슬롯에 슬롯을 추가하고 정의합니다.
   1. Name
   2. 광고 크기
   3. 가격 지점 (자동/매뉴얼)
4. 모든 슬롯을 추가하고 자격 증명을 수집합니다.
   1. 앱 ID 가져오기
   2. 가격대 CSV 파일 다운로드

## 3단계. APS 네트워크 활성화

Ironsource 플랫폼 내에서 SDK 네트워크 설정에 액세스, 접근 레벨플레이 계정에 APS 파라미터를 설정.

1. 위에서 언급한 자격 증명을 보유한 후 레벨플레이 계정에 로그인하고 **수익화** > **설정** > **SDK** ****네트워크****&#xB85C; 이동합니다.
2. **사용 가능한 네트워크** 표에서 APS를 선택하고 **활성화**를 선택합니다.

![APS를 선택하고 활성화](/api/media?file=/grow/media/images/Screen-Shot-2021-12-30-at-8.45.52.png)를 선택합니다.

3. 광고 네트워크 목록에서 APS를 선택하고 **설정**을 선택합니다.

![APS를 선택하고 설정 을 선택합니다.](/api/media?file=/grow/media/images/Screen-Shot-2021-12-30-at-8.47.04.png)

4. APS 앱 ID를 입력하고 CSV 파일을 그대로 업로드합니다.

![앱 ID 입력 및 CSV 업로드](/api/media?file=/grow/media/images/Screen-Shot-2021-12-29-at-22.46.02.png)

## 4단계. APS Unity 플러그인 임포트##step-4.-import-the-aps-unity-plugin

1. APS Unity 플러그인을 [APS 웹사이트](https://ams.amazon.com/webpublisher/uam/docs/aps-mobile/unity)에서 다운로드합니다.
2. Unity 프로젝트 열려 있는지 확인하고 패키지를 임포트.
3. Unity 메뉴 바 Amazon을 선택한 다음 Manage SDKs를 선택하여 Amazon SDK 관리자를 엽니다.

![Unity 에디터의 Amazon SDK Manager 메뉴입니다.](/api/media?file=/grow/media/images/image.png)

4. Ironsource 어댑터 설치하고 Unity 패키지를 임포트.

![Amazon SDK Manager에서 아이언소스 어댑터 설치 옵션을 선택합니다.](/api/media?file=/grow/media/images/image-2.png)

### Unity 네트워크 관리자(권장)##unity-network-manager-(recommended)

SDK 연동이 완료되면 Unity 네트워크 관리자 사용하여 APS 어댑터 추가합니다.

Unity 개발 플랫폼에서 Ads Mediation > Integration Manager로 이동합니다.

이미 최신 버전의 어댑터가 있는 경우, **행동** 버튼이 "업데이트"로 변경되고 비활성화됩니다.

## 6단계. Init APS SDK##step-6.-init-aps-sdk

APS 네트워크를 사용하려면 APS 광고를 표시하려면 레벨플레이 APS SDK를 모두 초기화해야 합니다.

애플리케이션 열리자마자 그리고 레벨플레이 SDK를 초기화하기 전에 APS SDK를 초기화합니다. APS 설정 2단계에 정의된 APS 앱 ID를 사용합니다.

```cs
Amazon.Initialize(amazonApiKey);
```

## 7단계 광고당 레벨플레이 Mediation 함께 APS 단가 정보를 공유합니다.##step-7.-share-aps-bid-info-with-levelplay-mediation-per-ad

각 광고를 로드하기 전에 APS API 호출 레벨플레이 SDK가 광고를 로드하는 데 필요한 로드 정보를 가져옵니다.

다음은 필수 단계입니다.

1. 각 레벨플레이 광고 유닛 로드 전에 APS 광고 요청을 로드합니다.
2. SetNetworkData를 호출 레벨플레이 APS 단가 정보를 공유합니다.
3. 레벨플레이 Mediation API를 사용하여 관련 광고 유닛을 로드합니다.

> **Note:**
>
> APS Unity 플러그인 버전 2.0.0 이상부터 **APSBannerAdRequest** / **APSInterstitialAdRequest** / **APSVideoAdRequest** 오브젝트는 Unity **AdNetworkInfo**라는 새로운 파라미터 사용합니다. 다음 예시에서 구현 차이를 참고.

### 배너/MREC 광고 로드##load-banner/mrec-ads

* 각 Ironsource 광고 유닛 로드 전에 APS 배너 광고 요청을 호출.

* APS 광고가 성공적으로 로드되면 레벨플레이 Mediation 광고 데이터를 공유합니다.
  1. 여기에는 다음 파라미터가 포함되어야 합니다. APS Ironsource 네트워크 키, Amazon에서 반환 단가 및 슬롯 고유 식별자
  2. loadBanner() 메서드를 호출하여 배너 로드합니다.

* APS Unity 플러그인 **2.0.0+**:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSBannerAdRequest bannerAdRequest = new APSBannerAdRequest(width, height, amazonBannerSlotId, adNetworkInfo);
    bannerAdRequest.onFailedWithError += (adError) => 
    { 
        IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM); 
    }; 
    bannerAdRequest.onSuccess += (adResponse) => 
    { 
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY, 
                                           APSMediationUtils.GetBannerNetworkData(amazonBannerSlotId, adResponse)); 
        IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM); 
    }; 
    bannerAdRequest.LoadAd();
```

* APS Unity 플러그인 **2.0.0** **아래**:

```cs
private APSBannerAdRequest bannerAdRequest;
bannerAdRequest = new APSBannerAdRequest(width, height, amazonBannerSlotId);
        bannerAdRequest.onFailedWithError += (adError) =>
        {
            IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM);
        };
        bannerAdRequest.onSuccess += (adResponse) =>
        {
             IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                                APSMediationUtils.GetBannerNetworkData(amazonBannerSlotId, adResponse));
             IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM);
        };
        bannerAdRequest.LoadAd();
```

APS가 보여줄 광고 없음(no fill) 반환하면 레벨플레이 loadBanner()를 호출.

> **Note:**
>
> Ironsource 자동 새로고침 메커니즘을 사용하려는 경우 노출마다 APS 로드 광고를 호출 합니다. 그러면 APS 배너도 다음 경매에 참여할 수 있습니다. 이 로직을 유지하고 싶지 않은 경우 새로고침 메커니즘을 취소하고 이전 광고를 삭제한 후 각 광고를 수동으로 로드합니다.

### 인터스티셜 광고 로드##load-interstitial-ads

* 각 Ironsource 광고 유닛 로드 전에 APS 인터스티셜 광고 요청 호출 APS는 단가 반환하거나 채우지 않음을 반환합니다.

* APS 광고가 성공적으로 로드되면 레벨플레이 Mediation 광고 데이터를 공유합니다.
  1. 여기에는 다음 파라미터가 포함되어야 합니다. APS Ironsource 네트워크 키, Amazon에서 반환 단가 및 슬롯 고유 식별자
  2. loadInterstitial() 메서드를 호출하여 인터스티셜 광고 로드합니다.

* APS Unity 플러그인 **2.0.0+**:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSInterstitialAdRequest interstitialVideoAdRequest = new APSInterstitialAdRequest(amzonInterstitialSlotId, adNetworkInfo);
    interstitialAdRequest.onSuccess += (adResponse) => 
    { 
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY, 
            APSMediationUtils.GetInterstitialNetworkData(amzonInterstitialSlotId, adResponse));
        IronSource.Agent.loadInterstitial(); 
    };
interstitialAdRequest.onFailedWithError += (adError) => 
    { 
    IronSource.Agent.loadInterstitial();
    Debug.Log("onFailedWithError interstitial:" + adError);
    };
interstitialAdRequest.LoadAd();
```

* APS Unity 플러그인 **2.0.0** **아래**:

```cs
private APSInterstitialAdRequest interstitialAdRequest;
interstitialAdRequest = new APSInterstitialAdRequest(amzonInterstitialSlotId);
    interstitialAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY, 
            APSMediationUtils.GetInterstitialNetworkData(amzonInterstitialSlotId, adResponse));
        IronSource.Agent.loadInterstitial();
    };
interstitialAdRequest.onFailedWithError += (adError) =>
    {
    IronSource.Agent.loadInterstitial();
    Debug.Log("onFailedWithError interstitial:" + adError);
    };
interstitialAdRequest.LoadAd();
```

APS가 보여줄 광고 없음(no fill) 반환하면 레벨플레이 loadInterstitial()을 호출.

레벨플레이 APS 어댑터 4.3.2부터 APS 인터스티셜 광고 비디오 광고를 지원합니다. 인터스티셜 광고 비디오를 로드하려면 APS AdRequest를 생성합니다.

* APS Unity 플러그인 **2.0.0+**:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSVideoAdRequest interstitialVideoAdRequest = new APSVideoAdRequest(320, 480, amazonInterstitialVideoSlotId, adNetworkInfo);
    interstitialVideoAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                            APSMediationUtils.GetInterstitialNetworkData(amazonInterstitialVideoSlotId, adResponse));
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.onFailedWithError += (adError) =>
    {
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.LoadAd();
```

* APS Unity 플러그인 **2.0.0** **아래**:

```cs
private APSVideoAdRequest interstitialVideoAdRequest;
interstitialVideoAdRequest = new APSVideoAdRequest(320, 480, amazonInterstitialVideoSlotId);
    interstitialVideoAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                            APSMediationUtils.GetInterstitialNetworkData(amazonInterstitialVideoSlotId, adResponse));
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.onFailedWithError += (adError) =>
    {
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.LoadAd();
```

### 보상형 광고##rewarded-ads

APS 통합은 앱에서 구현하는 보상형 광고 작업 모드에 따라 다릅니다.

1. [매뉴얼 로딩 모드](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md): APS와 연동하는 데 권장되는 설정입니다. 이렇게 하면 각 보상형 광고 광고 로드 전에 APS 광고 요청을 호출 합니다.
2. 보상형 광고 기본 모드(자동): 보상형 광고 광고를 표시하기 위해 레벨플레이 기본 모드를 사용하는 경우, 레벨플레이 SDK를 초기화하기 전에 APS SDK를 초기화한 후 첫 번째 APS 광고를 로드해야 합니다. 또한 각 쇼 전에 다음 APS 로드 요청을 호출하여 다음 워터폴 요청에 영향을 줄 것을 권장합니다.

#### 보상형 광고 로드##load-rewarded-ads

1. 각 레벨플레이 광고 유닛 로드 전에 또는 쇼 전에 자동 모드에서 APS 보상형 광고 광고 요청을 호출. 로드 광고 요청을 생성할 때 Slot UUID를 사용합니다.
2. APS 광고가 성공적으로 로드되면 다음 광고 데이터를 레벨플레이 Mediation 공유합니다.
   * APS Ironsource 네트워크 키, Amazon에서 반환 단가 및 슬롯 고유 식별자
3. APS가 보여줄 광고 없음(no fill) 반환하면 onFailedWithError() 콜백 트리거됩니다.

* APS Unity 플러그인 **2.0.0+**:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSVideoAdRequest rewardedVideoAdRequest = new APSVideoAdRequest(320, 480, amazonRewardedVideoSlotId, adNetworkInfo);

rewardedVideoAdRequest.onSuccess += (adResponse) => 
{ 
    IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                        APSMediationUtils.GetRewardedNetworkData(amazonRewardedVideoSlotId, adResponse));
    Ironsource. 에이전트.loadRewardedVideo(); // 매뉴얼 보상형 광고 모드 
}; 
interstitialVideoAdRequest.onFailedWithError += (adError) => 
{ 
    Ironsource. 에이전트.loadRewardedVideo(); // 매뉴얼 보상형 광고 모드
}; 
rewardedAdRequest.LoadAd();
```

* APS Unity 플러그인 **2.0.0** **아래**:

```cs
public void RequestRewardedVideo()
{
    rewardedVideoAdRequest = new APSVideoAdRequest(320, 480, amazonRewardedVideoSlotId);
    rewardedVideoAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                            APSMediationUtils.GetRewardedNetworkData(amazonRewardedVideoSlotId, adResponse));
        Ironsource. 에이전트.loadRewardedVideo(); // 매뉴얼 보상형 광고 모드
    };
    interstitialVideoAdRequest.onFailedWithError += (adError) =>
    {
        Ironsource. 에이전트.loadRewardedVideo(); // 매뉴얼 보상형 광고 모드
    };
    rewardedAdRequest.LoadAd();
}
```

이제 애플리케이션 내에서 APS 수요를 제공할 수 있습니다.

## 다음 단계##next-steps

레벨플레이를 통해 추가 광고 네트워크를 활용하려면 네트워크 [어댑터를](/grow/levelplay/sdk/unity/mediation-networks.md) 통합하고 통합 가이드를 따르십시오.
