# Android용 광고 품질 SDK 통합

> Android용 레벨플레이 광고 품질 SDK의 통합을 용이하게 하며, 설정 단계와 구성 수정에 대해 설명합니다.

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

> **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

### Gradle##gradle

1. 저장소 섹션 내부에서 앱 레벨 **빌드.gradle** 파일에 다음 코드를 추가합니다.

```java

repositories {
	mavenCentral()
}
```

2. 그런 다음 종속성 섹션에 다음을 추가합니다.

```java

dependencies { 
    // Ad Quality SDK (standalone; from 8.9.0 Ad Quality is integrated in LevelPlay SDK)
    implementation 'com.unity3d.ads-mediation:adquality-sdk:9.3.1'
}
```

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

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

```java

import com.ironsource.adqualitysdk.sdk.IronSourceAdQuality;
protected void onCreate(Bundle savedInstanceState) {
    // Initialize
    IronSourceAdQuality.getInstance().initialize(this, appKey);
}
```

## 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 오브젝트를 생성합니다.

```java

ISAdQualityConfig.Builder adQualityConfigBuilder = new ISAdQualityConfig.Builder();
```

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

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

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

```java

adQualityConfigBuilder.setUserId(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의 경우는 나중에 설정됩니다.

```java

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

```java

adQualityConfigBuilder.setTestMode(true); 
// The default is false - set to true only to test your Ad Quality integration
```

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

```java

adQualityConfigBuilder.setLogLevel(ISAdQualityLogLevel.INFO);
// There are 5 different log levels:
// ERROR, WARNING, INFO, DEBUG, VERBOSE
// The default is INFO
ISAdQualityConfig adQualityConfig = adQualityConfigBuilder.build();
IronSourceAdQuality.getInstance().initialize(this, appKey, adQualityConfig);
```

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

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

ISAdQualityInitListener:

```java

ISAdQualityConfig.Builder 빌더 = 새로운 ISAdQualityConfig.Builder().setAdQualityInitListener(새로운 ISAdQualityInitListener() { 

    @Override 
    public void adQualitySdkInitSuccess() { 
        Log.d("AdQualityInitListener", "adQualitySdkInitSuccess"); 
    } 

    @Override 
    public void adQualitySdkInitFailed(ISAdQualityInitError error, String message) { 
        Log.d("AdQualityInitListener", "adQualitySdkInitFailed " + error + " message: " + message); 
    } 
}); 

ISAdQualityConfig adQualityConfig = builder.build();
IronSourceAdQuality.getInstance().initialize(this, appKey, adQualityConfig);
```

> **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` 메서드는 광고가 표시될 때 호출되어야 하며, 광고 수명 주기를 지나 호출하면 효과가 없습니다.

```java

ISAdQualityCustomMediationRevenue.Builder builder = new ISAdQualityCustomMediationRevenue.Builder()                                                 
    .setMediationNetwork(ISAdQualityMediationNetwork.SELF_MEDIATED)                                                 
    .setAdType(ISAdQualityAdType.REWARDED_VIDEO)
    .setPlacement("placement")
    .setRevenue(0.12);
IronSourceAdQuality.getInstance().sendCustomMediationRevenue(builder.build());
```

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 연동에 다음 코드 스니핏을 추가합니다.

```java

RewardedAd mRewardedAd;
 
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
   mRewardedAd = rewardedAd;
   // Set paid event listener
   mRewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
   @Override
   public void onPaidEvent(AdValue adValue) {
         ISAdQualityCustomMediationRevenue.Builder builder = new ISAdQualityCustomMediationRevenue.Builder()                                                                                                         
             .setMediationNetwork(ISAdQualityMediationNetwork.ADMOB)                                                                                                 
             .setAdType(ISAdQualityAdType.REWARDED_VIDEO)                                                      
             .setPlacement(mRewardedAd.getAdUnitId())                                                          
             .setRevenue(adValue.getValueMicros()/1000000.0);
         IronSourceAdQuality.getInstance().sendCustomMediationRevenue(builder.build());
       }
  });
}
```
