# 集成适用于 Android 的广告品质 SDK

> 方便集成适用于 Android 的 LevelPlay Ad 品质 SDK，涵盖设置步骤和修改配置。

Ad Quality 有助于监控和控制用户看到的广告内容，确保内容与应用程序的目标保持一致并增强用户体验。在投放吸引受众的相关广告的同时，最大限度发挥收入潜力。

> **Note:**
>
> 从版本 8.9.0 开始，Ad 品质 集成到 LevelPlay SDK 中，并在实现 LevelPlay 时自动初始化。如果未在构建中实现 LevelPlay，或使用早于 8.9.0 的 LevelPlay SDK 版本，则适用以下概述的步骤。

## 先决条件##prerequisites

按照我们的[分步指南](/grow/levelplay/platform/get-started/create-account.md)，在 LevelPlay 平台中配置应用程序。

## 步骤 1：将广告品质 SDK 导入 app##step-1:-import-the-ad-quality-sdk-to-your-app

### Gradle##gradle

1. 将以下代码添加到您的应用级别 **build.gradle** 文件的 repository 部分中：

```java

repositories {
	mavenCentral()
}
```

2. 然后将以下代码添加到 dependencies 部分中：

```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. 使用 LevelPlay app 密钥初始化广告品质 SDK（可在 Unity LevelPlay 平台中找到）。
2. 将以下代码添加到app程序的主线程中，或与其他广告网络 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:**
>
> 要使用以下配置，请在初始化 LevelPlay SDK 之前初始化广告品质 SDK。

自定义集成设置，从而使用以下特殊配置获得更多功能：

1. 用户 ID：使用您自己的用户 ID，而不是 Ad 品质 中的默认 ID
2. 测试模式：测试 Ad Quality SDK 集成（默认值为 false）
3. 日志级别：选择要调试代码问题的日志级别（默认值为 INFO）

使用以下代码，通过构建器创建配置对象。

```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. 在初始化 Ad 品质 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:**
>
> 如果使用 LevelPlay，请确保先初始化 Ad Quality，以便使用以下功能

ISAdQualityInitListener：

```java

ISAdQualityConfig.Builder builder = new ISAdQualityConfig.Builder().setAdQualityInitListener(new 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:**
>
> 如果使用 LevelPlay，请确保先初始化 Ad Quality，以便使用以下功能

> **Note:**
>
> 该功能仅支持全屏广告服务。对于 LevelPlay、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());
       }
  });
}
```
