# Ad Quality 추가 구성

> 사용자 ID를 설정하고 테스트 모드를 활성화하고 로그 레벨을 조정하여 기능과 디버깅을 개선하여 Ad Quality 연동을 커스터마이즈할 수 있습니다.

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

## 고급 초기화

* 사용자 ID – 유의미한 사용자 활동 파악 인사이트를 얻기 위해 자체 고유한 사용자 ID 사용
* 테스트 모드 – Ad Quality SDK 연동 테스트(기본 설정: false)
* 로그 레벨 – 코드 문제를 디버깅할 로그 레벨 선택(기본 설정: INFO)

> **Note:**
>
> 다음 기능을 사용할 수 있도록 먼저 Ad Quality SDK를 초기화해야 합니다.

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

첫 번째 씬의 Awake 메서드에 다음 코드를 추가합니다.

```java
ISAdQualityConfig adQualityConfig = new ISAdQualityConfig();
```

### 사용자 ID

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

* 자체 사용자 ID를 사용하며, Ad Quality 초기화 전에 언제든지 추가할 수 있습니다.

  ```java
  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.
  ```
* Ad Quality 초기화 후 사용자 ID가 결정된 경우를 위해, 기본 사용자 ID를 수정할 수 있는 API가 제공됩니다.

  ```java
  IronSourceAdQuality.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.
  ```

### 테스트 모드

```java
adQualityConfig.TestMode = true;
// The default is false - set to true only to test your Ad Quality integration
```

### 로그 레벨

```java
adQualityConfig.LogLevel = ISAdQualityLogLevel.INFO;
// There are 5 different log levels:
// ERROR, WARNING, INFO, DEBUG, VERBOSE
// The default is INFO
IronSourceAdQuality.Initialize(appKey, adQualityConfig);
```

## 초기화 콜백

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

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

```java
public class AdQualityInit : ISAdQualityInitCallback { 
    public void adQualitySdkInitSuccess() { 
        Debug.Log("adQualitySdkInitSuccess"); 
    }
 
    public void adQualitySdkInitFailed(ISAdQualityInitError adQualitySdkInitError, string errorMessage) { 
        Debug.Log($"adQualitySdkInitFailed: {adQualitySdkInitError}, message: {errorMessage}");
    } 
}

public class AdQualityDemo : MonoBehaviour { 
    void Awake() { 
        AdQualityInit initCallbacks = new AdQualityInit(); 
        ISAdQualityConfig adQualityConfig = new ISAdQualityConfig { 
            AdQualityInitCallback = initCallbacks 
        };
 
        IronSourceAdQuality.Initialize(appKey, adQualityConfig); 
    } 
}

```

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

## Ad Quality SDK에 노출 단위 광고 수익 리포트

* 레벨플레이를 사용 중인 경우, 다음 기능을 사용하기 전에 Ad Quality SKD를 초기화했는지 확인합니다.
* 이 기능은 인터스티셜 광고와 보상형 광고만 지원합니다. 
* 레벨플레이, MAX, DT FairBid의 경우 이 데이터는 자동으로 수집됩니다.
* 최소 요구 사항: Ad Quality SDK 7.2.0 이상

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

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

```java
ISAdQualityCustomMediationRevenue customMediationRevenue = new ISAdQualityCustomMediationRevenue();
customMediationRevenue.MediationNetwork = ISAdQualityMediationNetwork.SELF_MEDIATED;
customMediationRevenue.AdType = ISAdQualityAdType.REWARDED_VIDEO;
customMediationRevenue.Revenue = 1.2;
IronSourceAdQuality.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 연동에 다음 코드 스니핏을 추가합니다.

```java
RewardedAd rewardedAd;
public void HandleRewardedAdLoaded(object sender, EventArgs args)
{
    this.rewardedAd = args.rewardedAd;
}
private void HandleAdPaidEvent(object sender, AdValueEventArgs args)
{
   AdValue impressionData = args.AdValue;
   ISAdQualityCustomMediationRevenue customMediationRevenue = new ISAdQualityCustomMediationRevenue();
   customMediationRevenue.MediationNetwork = ISAdQualityMediationNetwork.ADMOB;
   customMediationRevenue.AdType = ISAdQualityAdType.REWARDED_VIDEO;
   customMediationRevenue.Revenue = impressionData.Value/1000000f;
   IronSourceAdQuality.SendCustomMediationRevenue(customMediationRevenue);
}
```
