# Android 向けネイティブ広告インテグレーション

> ネイティブ広告を Android アプリケーションに統合するには、ネイティブ広告をロードし、広告のアセットをディスプレイするビューを作成およびバインディングし、使用後に広告オブジェクトを適切に破棄します。

ネイティブ広告は、アプリケーション内の他のコンテンツに溶け込むようにカスタマイズできる広告の形式です。これにより、広告がよりオーガニックに表示され、ユーザー エクスペリエンスとリテンションの向上につながります。

## 前提条件##prerequisites

LevelPlay SDK 7.9.0 以降がアプリケーションに正しく統合されていることを確認します。インテグレーションの概要は[こちら](/grow/levelplay/sdk/android/sdk-integration.md)です。

## ネイティブ広告の統合##integrate-native-ads

ネイティブ広告を統合するには、主に 3 つのステップに従う必要があります。 

1. ネイティブ広告のロード
2. ビューを作成してバインドする
3. ネイティブ広告の破棄

## ステップ 1. ネイティブ広告のロード##step-1.-load-a-native-ad

ネイティブ広告オブジェクトのカスタム設定を可能にする LevelPlayNativeAd.Builder クラスを使用してネイティブ広告オブジェクトを作成する必要があります。ネイティブ広告のロードメカニズムを 1 つの場所で管理するために、別のクラスを作成することをお勧めします。 

[SDK 初期化完了](/grow/levelplay/sdk/android/sdk-integration.md)コールバックを受信した後にネイティブ広告をロードしてください。 

```java
    LevelPlayNativeAd nativeAd = new LevelPlayNativeAd.Builder()
            .withPlacementName(placementName)
            .withListener(listener) 
            .build();
// You can add the native ad object to a list of native ads (mNativeAds), which can be used to display the ad when needed
    mNativeAds.add(nativeAd);
    nativeAd.loadAd();
```

配置名でネイティブ広告を初期化し、広告コールバックのリスナーを設定できます。

> **Note:**
>
> 新しいロードが発生するたびに、広告オブジェクトを破棄して新しいオブジェクトを作成する必要があります。これは、広告を表示した後でも、ロードに失敗した後でも発生します。

## ステップ 2. リスナーの実装##step-2.-implement-the-listener

次に、ネイティブの広告リスナーをコードに実装します。LevelPlay SDK は、ネイティブ広告アクティビティを通知するためにいくつかのコールバックを起動します。SDK は、以下に示すすべての可能なイベントをリスナーに通知します。

```java
    // Invoked each time a native ad was loaded.
    @Override
    public void onAdLoaded(LevelPlayNativeAd nativeAd, AdInfo adInfo) {
        // Your implementation here
    }
    // Invoked when the native ad loading process has failed.
    @Override
    public void onAdLoadFailed(LevelPlayNativeAd nativeAd, IronSourceError error) {
        // Your implementation here
    }
    // Invoked each time the first pixel is visible on the screen
    @Override
    public void onAdImpression(LevelPlayNativeAd nativeAd, AdInfo adInfo) {
        // Your implementation here
    }
    // Invoked when end user clicked on the native ad
    @Override
    public void onAdClicked(LevelPlayNativeAd nativeAd, AdInfo adInfo) {
        // Your implementation here
    }
```

> **Note:**
>
> ロード用に作成されたネイティブ広告オブジェクトとコールバックで返されるネイティブ広告オブジェクトが同じネイティブ広告オブジェクトを参照している。

## ステップ 3. ビューを作成してバインドする##step-3.-create-a-view-and-bind-it

ネイティブ広告をロードする前に、ビューを作成し、バインドし、すべての関連情報を手動で設定する必要があります。これには、

タイトル、ボディ、広告テキスト、画像、メディアビューコンテナ、CTA ボタンなど。 

各ネイティブ広告は 1 つの NativeAdLayout で表され、このビューはその広告のすべての要素を表示します。

ここでは、広告を表示するためのベースラインとして使用できるXML形式を提案します。

```java
<com.ironsource.mediationsdk.ads.nativead.NativeAdLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingStart="5dp"
    android:paddingEnd="5dp"
    android:paddingTop="10dp"
    android:contentDescription="com.ironsource.mediationsdk.ads.NativeAdLayout">
    <LinearLayout
        android:orientation="vertical"
        ...>
            <TextView
                android:id="@+id/badge"
                .../>
                <ImageView
                    android:id="@+id/ad_app_icon"
                    ...>
                    <TextView
                        android:id="@+id/ad_title"
                        .../>
                    <ボタン
                        android:id="@+id/ad_call_to_action"
                        .../>
             // Other assets, such as media view.
         ...
                </LinearLayout>
</com.ironsource.mediationsdk.ads.nativead.NativeAdLayout>
```

### 広告透明度の向上##enhancing-ad-transparency

**プライバシーアイコン -** この要素は、設計プロセス中にネイティブ広告の左下隅に組み込む必要があります。

**広告表示** - これが広告であることをユーザーに理解してもらうために、ネイティブ広告を「Ad」としてマークする必要があります。これは独自の指示を追加することで実現できます。

#### NativeAdLayout を作成して設定します。##create-a-nativeadlayout-and-populate-it

#### レイアウトを拡大##inflate-the-layout

レイアウト内のネイティブ広告要素をディスプレイするために使用できる NativeAdLayout オブジェクトにレイアウト XML ファイルを膨らませます。

```java
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    NativeAdLayout nativeAdLayout = (NativeAdLayout) inflater.inflate(R.layout.native_ad, null);
```

#### 資産ビューの人口と登録##assets-views-population-and-registration

このコードサンプルは、タイトル、アイコン、および MediaView のディスプレイに使用するビューを特定します。次に、アセットを入力し、 nativeAdLayout オブジェクトに登録します。

```java
    // Locate all views to be populated
    TextView titleView = nativeAdLayout.findViewById(R.id.ad_title);
    ImageView iconView = nativeAdLayout.findViewById(R.id.ad_app_icon);
    LevelPlayMediaView mediaView = nativeAdLayout.findViewById(R.id.ad_media);
    // Populate the views
    String title = nativeAd.getTitle();
    if (title != null) {
        titleView.setText(title);
    }
    NativeAdDataInterface.Image icon = nativeAd.getIcon();
    if (icon != null) {
        if (icon.getDrawable() != null) {
            iconView.setImageDrawable(icon.getDrawable());
        }
    }
    // Register the views to be bound
    nativeAdLayout.setTitleView(titleView);
    nativeAdLayout.setIconView(iconView);
    nativeAdLayout.setMediaView(mediaView);
    nativeAdLayout.setCallToActionView(ctaView);

    // Register the native ad with the layout
    nativeAdLayout.registerNativeAdViews(nativeAd);

```

アプリケーションにディスプレイするネイティブ広告オブジェクトによって提供される各アセットについて、そのアセットに対応するビューの検索、値の設定、広告クラス録のプロセスを繰り返します。

**MediaView** 

MediaView は、メインのメディア要素のディスプレイを目的とした指定コンテナです。コンテナには固定サイズを使用することをお勧めします。

## ステップ 4. ネイティブ広告の破棄##step-4.-destroy-the-native-ad

ネイティブ広告を破棄するには、以下のメソッドを呼び出します。

```java
nativeAd.destroyAd();
```

破棄されたネイティブ広告はロードできません。再度配信したい場合は、再度開始する必要があります。

## サポートされているネットワーク##supported-networks

| ネットワーク                    | SDK /SDK | アダプタ   |
| ------------------------- | -------- | ------ |
| Google AdMob と Ad Manager | 22.1.0   | 4.3.38 |
| Meta                      | 6.14.0   | 4.3.43 |
