# iOS용 광고 품질 SDK 통합

> 광고 품질 SDK를 iOS 앱에 통합하여 광고 성과를 모니터링하고 분석하고 앱 키로 초기화합니다.

광고 품질은 사용자가 보는 광고 콘텐츠를 모니터링하고 제어할 수 있도록 지원하여, 앱의 목적에 부합하고 사용자 경험을 향상시키는 광고를 제공하는 데 도움이 됩니다. 고객의 관심을 끄는 관련성 높은 광고를 게재하면서 수익 창출 가능성을 극대화합니다.

> **Note:**
>
> 버전 8.9.0부터 Ad 품질 레벨플레이 SDK에 통합되며, 레벨플레이 구현될 때 자동으로 초기화됩니다. 아래에서 설명하는 단계는 빌드 레벨플레이 구현되지 않거나 8.9.0 이전 레벨플레이 SDK 버전을 사용하는 경우에 적용됩니다.

## 필수 조건##prerequisites

[단계별 가이드](/grow/levelplay/platform/get-started/create-account.md)를 따르고 레벨플레이 플랫폼에서 애플리케이션을 구성합니다.

## 1단계: 앱에 Ad 품질 SDK 임포트##step-1:-import-the-ad-quality-sdk-to-your-app

### CocoaPods##cocoapods

[CocoaPods](http://cocoapods.org/) 는 Objective-C 및 Swift 의 종속성 관리자로서 SDK 통합 프로세스를 자동화하고 단순화합니다. 자세한 내용은 CocoaPods [시작하기](http://guides.cocoapods.org/using/getting-started.html) 및 [CocaPods 사용](http://guides.cocoapods.org/using/using-cocoapods.html) 가이드를 참조하십시오.

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

```text
pod 'IronSourceAdQualitySDK','9.3.1'
```

## 2단계: SDK 초기화##step-2:-initialize-the-sdk

1. Unity 레벨플레이 플랫폼에서 확인할 수 있는 Ironsource 앱 키를 사용하여 Ad 품질 SDK를 초기화합니다.
2. 앱의 메인 스레드 또는 다른 광고 네트워크 SDK와 동일한 스레드 다음 코드를 추가하여 Ad 품질 SDK를 초기화합니다.

메인 ViewController의 viewDidLoad 메서드에 다음 코드를 추가합니다.

```text
#import "IronSourceAdQuality.h"
 
@implementation ViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Initialize 
    [[IronSourceAdQuality getInstance] initializeWithAppKey:appKey]; 
} 
@end
```

## 3단계(선택 사항): 고급 SDK 초기화##step-3-(optional):-advanced-sdk-initialization

> **Note:**
>
> 아래 설정 사용하려면 레벨플레이 SDK를 초기화하기 전에 Ad 품질 SDK를 초기화합니다.

커스터마이즈 구성을 사용하여 연동 설정을 커스터마이즈하면 더 많은 기능을 활용할 수 있습니다.

1. 사용자 ID: Ad 품질 기본 ID 대신 자체 사용자 ID 사용
2. 테스트 모드: Ad Quality SDK 연동 테스트(기본 설정: false)
3. 로그 레벨: 로그 레벨 – 코드 문제를 디버깅할 로그 레벨 선택(기본 설정: INFO)

아래 코드를 사용하여 빌더에서 config 오브젝트를 생성합니다.

```text
ISAdQualityConfig *adQualityConfig = [ISAdQualityConfig config];
```

### 사용자 ID##user-id

Ad Quality SDK는 다음과 같은 사용자 ID 구성 옵션을 제공합니다.

1. 사용자 ID를 사용하고 초기화 전에 또는 초기화 중에 추가합니다.

```text
adQualityConfig.userId = userId;
// The default user id is Ad Quality internal id.
// The user id cannot be null and must be between 2 and 100 characters, otherwise it will be blocked.
```

2. 광고 품질 SDK를 초기화한 후 기본 사용자 ID를 변경합니다. ID의 경우는 나중에 설정됩니다.

```text
[[IronSourceAdQuality getInstance] changeUserId:userId];
// The default user id is Ad Quality internal id. 
// The user id cannot be null and must be between 2 and 100 characters, otherwise it will be blocked.
```

### **테스트 모드**##**test-mode**

```text
adQualityConfig.testMode = YES;
// The default is NO - set to true only to test your Ad Quality integration
```

### **로그 레벨**##**log-level**

```text
adQualityConfig.logLevel = IS_AD_QUALITY_LOG_LEVEL_INFO;
// There are 5 different log levels:
// IS_AD_QUALITY_LOG_LEVEL_ERROR,
// IS_AD_QUALITY_LOG_LEVEL_WARNING,
// IS_AD_QUALITY_LOG_LEVEL_INFO,
// IS_AD_QUALITY_LOG_LEVEL_DEBUG,
// IS_AD_QUALITY_LOG_LEVEL_VERBOSE
// The default is IS_AD_QUALITY_LOG_LEVEL_INFO

[[IronSourceAdQuality getInstance] initializeWithAppKey:appKey andConfig:adQualityConfig];
```

## 4단계(선택 사항): SDK 콜백 이벤트 설정##step-4-(optional):-configure-sdk-callback-events

> **Note:**
>
> 레벨플레이를 사용 중인 경우, 다음 기능을 사용하기 전에 Ad Quality를 초기화했는지 확인합니다.

Ad Quality SDK가 초기화된 동일한 위치에서 별도의 클래스에 iOS 콜백을 구현해야 합니다.

ISAdQualityInitDelegate:

```text
#import "IronSourceAdQuality.h"

@interface ViewController () : NSObject<ISAdQualityInitDelegate>
@end

@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  ISAdQualityConfig *config = [ISAdQualityConfig config];
  [config setAdQualityInitDelegate:self];

  // Initialize
  [[IronSourceAdQuality getInstance] initializeWithAppKey:appKey
  andConfig:config];
}
- (void)adQualitySdkInitSuccess {
   NSLog(@"adQualitySdkInitSuccess");
}
- (void)adQualitySdkInitFailed:(ISAdQualityInitError) 오류와 메시지:(NSString *)메시지 {
   NSLog(@"adQualitySdkInitFailed %u message: %@", error, message);
}

@end
```

> **Note:**
>
> Ad Quality SDK를 초기화하는 데 소요되는 시간은 앱에 연동된 광고 네트워크 SDK의 개수에 따라 달라집니다. 소요 시간은 네트워크 연결 문제로 인해 지연될 수도 있습니다. 초기화하는 데 평균적으로 3\~4초가 소요됩니다.

## 5단계(선택 사항): Ad Quality SDK에 노출 단위 광고 수익 리포트##step-5-(optional):-report-impression-level-ad-revenue-to-ad-quality-sdk

> **Note:**
>
> 레벨플레이를 사용 중인 경우, 다음 기능을 사용하기 전에 Ad Quality를 초기화했는지 확인합니다.

> **Note:**
>
> 이 기능은 전체 화면 광고에서만 지원됩니다. 레벨플레이, MAX 및 DT FairBid의 경우 이 데이터는 자동으로 수집됩니다.

광고 품질 SDK 7.2.0 이상은 노출 수준 광고 매출 보고서를 지원합니다.

Ad Quality SDK에서 노출 수준 광고 수익을 리포트하려면 SDK 연동에 다음 코드 스니핏을 추가합니다.

> **Important:**
>
> `sendCustomMediationRevenue` 메서드는 광고가 표시될 때 호출되어야 하며, 광고 수명 주기를 지나 호출하면 효과가 없습니다.

```text
 ISAdQualityCustomMediationRevenue *customMediationRevenue = [[ISAdQualityCustomMediationRevenue 할당] init];
   customMediationRevenue.mediationNetwork = IS_AD_QUALITY_MEDIATION_NETWORK_SELF_MEDIATED;
   customMediationRevenue.adType = IS_AD_QUALITY_AD_TYPE_REWARDED;
   customMediationRevenue.placement = "placement";
   customMediationRevenue.revenue = 0.12;
   [[IronSourceAdQuality getInstance] sendCustomMediationRevenue:customMediationRevenue];
```

AdMob 미디에이션을 사용 중인 경우 다음 단계를 따릅니다.

1. AdMob 세일즈 담당자에게 [AdMob 노출 수준 LTV(iLTV) 활성화](https://support.google.com/admob/answer/11322405)를 요청합니다.
2. [Android](https://developers.google.com/admob/android/quick-start)용 또는 [iOS](https://developers.google.com/admob/ios/quick-start)용 GMA SDK 8.12.0 이상을 사용하고 있으며 해당 버전이 iLTV를 지원하는지 확인합니다.
3. Ad Quality SDK 연동에 다음 코드 스니핏을 추가합니다.

```text
GADRewardedAd* rewardedAd;
[GADRewardedAd loadWithAdUnitID:@"AD_UNIT_ID"
요청:요청
completionHandler:^(GADRewardedAd *ad, NSError *error) {
   if (error) {
     NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
     반환;
   }
   self.rewardedAd = ad;
   self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull adValue){
   ISAdQualityCustomMediationRevenue *customMediationRevenue = [[ISAdQualityCustomMediationRevenue 할당] init];
   customMediationRevenue.mediationNetwork = IS_AD_QUALITY_MEDIATION_NETWORK_ADMOB;
   customMediationRevenue.adType = IS_AD_QUALITY_AD_TYPE_REWARDED;
   customMediationRevenue.placement = [rewardedAd adUnitID];
   customMediationRevenue.revenue = adValue.value.doubleValue;
   [[IronSourceAdQuality getInstance] sendCustomMediationRevenue:customMediationRevenue];
  }
}];
```
