# Android向け広告品質SDKの統合

> 設定手順と設定の変更をカバーする、Android 向け LevelPlay 広告品質 SDK のインテグレーションを容易にします。

広告品質を使用すると、ユーザーに表示される広告コンテンツを監視および管理して、アプリケーションの目標に即した広告が表示されるようにし、ユーザー体験を向上させることができます。オーディエンスにとって関連性の高い魅力的な広告を配信して、収益の可能性を最大化しましょう。

> **Note:**
>
> バージョン 8.9.0 から、広告品質は LevelPlay SDK に統合され、LevelPlay が実装されると自動的に初期化されます。LevelPlay がビルドに実装されていない場合、または 8.9.0 より前の LevelPlay SDK バージョンを使用している場合は、以下の手順が適用されます。

## 前提条件##prerequisites

[ステップ別ガイド](/grow/levelplay/platform/get-started/create-account.md)に従って、LevelPlay プラットフォームでアプリケーションを構成します。

## ステップ 1: アプリケーションに広告品質 SDK をインポート##step-1:-import-the-ad-quality-sdk-to-your-app

### Gradle##gradle

1. アプリケーションの **build.gradle** ファイル inside repositories セクションに、以下のコードを追加します。

```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. Unity LevelPlay プラットフォームにある LevelPlay キー 品質 SDK を初期化します。
2. アプリケーションのメインスレッド、または他の広告ネットワークSDKと同じスレッドに以下のコードを追加して、広告品質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 の代わりに独自のユーザー ID を使用する
2. テストモード:広告品質 SDK インテグレーションをテストします (デフォルトは false)
3. ログレベル:コードの問題をデバッグするログレベルを選択します (デフォルトは INFO)

ビルダーで以下のコードを使用して、設定オブジェクトを作成します。

```java

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

### ユーザー ID##user-id

広告品質 SDK には、ユーザー ID を設定するための 2 つのオプションがあります。

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. デフォルトのユーザー ID は、後で ID が設定されるように、広告品質 SDK を初期化した後に変更してください。

```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());
       }
  });
}
```
