# APS 연동 (legacy)

> 광고 슬롯을 설정하고 레벨플레이 플랫폼에서 APS를 설정하고 빌드에 APS 어댑터를 추가하여 Amazon 퍼블리셔 서비스 (APS)를 통합할 수 있습니다.

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

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

> **Note:**
>
> 이 Mediation 네트워크의 어댑터 변경 기록을 보려면 [iOS용 Mediation 네트워크](/grow/levelplay/sdk/ios/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 어댑터 추가##step-4.-add-the-aps-adapter-to-your-build

### CocoaPods##cocoapods

APS SDK를 Cocoapods와 연동하려면 podfile에 다음 줄을 입력하면 됩니다.

```objective-c
pod 'IronSourceAPSAdapter','4.3.20.0'
```

## 5단계 SKAdNetworkItems 및 Info.plist 업데이트##step-5.-update-skadnetworkitems-and-info.plist

다음 코드를 사용하여 Info.plist에 APS **SKAdNetworkItems**를 정의해야 합니다.

```xml
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
</array>
```

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

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

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

```objective-c
#import <DTBiOSSDK/DTBiOSSDK.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[DTBAds sharedInstance] setAppKey: @"APS_app_id"];
  return YES;
}
```

> **Note:**
>
> APS iOS SDK 5.0.0 이상부터 **DTBAdLoader** 오브젝트 **DTBAdNetworkInfo**라는 새 파라미터 사용합니다. 다음 예시에서 구현 차이를 참고.

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

1. 각 Ironsource 광고 유닛 로드 전에 APS 배너 광고 요청을 호출(너비 320 또는 728). 로드 광고 요청을 생성할 때 Slot UUID를 사용합니다.
   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:height 및SlotUUID:slotUUID]; 
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_UNITY_LEVELPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

   * APS iOS SDK 5.0.1 이하:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:height 및SlotUUID:slotUUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];

     ```

      
2. APS 광고가 성공적으로 로드되면 광고 데이터를 Ironsource 공유합니다. 여기에는 다음 파라미터가 포함되어야 합니다.

   1. 단가 정보: Amazon 광고 표시에 필요한 정보
   2. 가격대 인코딩: APS에서 반환된 낙찰 광고 가격
   3. UUID: 슬롯 고유 식별자
   4. 너비: 배너 너비
   5. 높이: 배너 높이

   ```objective-c
   - (void)onSuccess:(DTBAdResponse *)adResponse{ 
     
       NSString* amznPricePoint = [adResponse amznSlots];
       NSDictionary* mediationHints = [adResponse mediationHints];
       
       NSNumber* width = [NSNumber numberWithInt:adSize.width];
       SNumber* height = [NSNumber numberWithInt:adSize.height];
           
       NSDictionary* bannerData = @{@"uuid":slotUUID, @"width":width, @"height":height, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
       NSDictionary* apsData = @{IS_BANNER:bannerData};
           
       [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
   }
   ```

   APS가 보여줄 광고 없음(no fill) 반환하면 레벨플레이 load 배너 메서드를 호출.
3. Ironsource 배너 광고를 로드합니다. 자세히 알아보기 [여기](/grow/levelplay/sdk/ios/banner-integration.md).

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

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

1. 각 Ironsource 광고 유닛 로드 전에 APS 인터스티셜 광고 요청 호출 로드 광고 요청을 생성할 때 Slot UUID를 사용합니다.
   APS iOS SDK 5.0.1+:

   ```objective-c
   DTBAdSize *size = [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:slotUUID]; 
   DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_UNITY_LEVELPLAY];
   DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
   [adLoader setSizes:size, nil]; 
   [adLoader loadAd:self];
   ```

   APS iOS SDK 5.0.1 이하:

   ```objective-c
   DTBAdSize *size = [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:slotUUID];
   DTBAdLoader *adLoader = [DTBAdLoader new];
   [adLoader setSizes:size, nil];
   [adLoader loadAd:self];
   ```

   레벨플레이 APS 어댑터 4.3.3부터 APS 인터스티셜 광고 비디오 광고를 지원합니다. 인터스티셜 광고 비디오를 로드하려면 다음 메서드를 호출.

   앱이 세로 모드인 경우:

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 및SlotUUID:slotUUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_UNITY_LEVELPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 5.0.1 이하:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 및SlotUUID:slotUUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

   앱이 랜드스케이프 모드인 경우:

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 및SlotUUID:slotUUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_UNITY_LEVELPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 5.0.1 이하:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 및SlotUUID:slotUUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

2. APS 광고가 성공적으로 로드되면 광고 데이터를 Ironsource 공유합니다. 여기에는 다음 파라미터가 포함되어야 합니다.
   1. 단가 정보: Amazon 광고 표시에 필요한 정보
   2. 가격대 인코딩: APS에서 반환된 낙찰 광고 가격
   3. UUID: 슬롯 고유 식별자

      ```objective-c
      - (void)onSuccess:(DTBAdResponse *)adResponse{ //svt on onSuccess
          
          NSString* amznPricePoint = [adResponse amznSlots];
          NSDictionary* mediationHints = [adResponse mediationHints];
          NSDictionary* isData = @{@"uuid":slotUUID, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
          NSDictionary* apsData = @{IS_INTERSTITIAL:isData};
              
          [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
      }
      ```

      APS가 보여줄 광고 없음(no fill) 반환하면 레벨플레이 load 인터스티셜 광고 메서드를 호출.

3. 로드 ironSource 인터스티셜 광고. 자세히 알아보기 [여기](/grow/levelplay/sdk/ios/interstitial-integration.md).

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

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

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

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

1. 각 Ironsource 광고 유닛 로드 전에(또는 자동 모드에서 쇼 전에) APS 보상형 광고 광고 요청을 호출. 로드 광고 요청을 생성할 때 Slot UUID를 사용합니다. ****앱이 세로 모드인 경우:****

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 및SlotUUID:slotUUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_UNITY_LEVELPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 5.0.1 이하:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 및SlotUUID:slotUUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

   앱이 랜드스케이프 모드인 경우:

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 및SlotUUID:slotUUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_UNITY_LEVELPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 5.0.1 이하:

     ```objective-c
     DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 및SlotUUID:slotUUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

2. APS 광고가 성공적으로 로드되면 광고 데이터를 Ironsource 공유합니다. 여기에는 다음 파라미터가 포함되어야 합니다.
   1. Mediation 힌트: Amazon 광고 표시에 필요한 정보
   2. 가격대 인코딩: APS에서 반환된 낙찰 광고 가격
   3. UUID: 슬롯 고유 식별자

```objective-c
- (void)onSuccess:(DTBAdResponse *)adResponse{
    
    NSString* amznPricePoint = [adResponse amznSlots];
    NSDictionary* mediationHints = [adResponse mediationHints];
    NSDictionary* rvData = @{@"uuid":slotUUID, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
    NSDictionary* apsData = @{IS_REWARDED_VIDEO:rvData};
        
    [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
}
```

APS가 보여줄 광고 없음(no fill) 반환하면 레벨플레이 load 보상형 광고 메서드를 호출.

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

## 다음 단계##next-steps

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