# Android용 네이티브 광고 통합

> 네이티브 광고를 로드하고, 뷰를 생성 및 바인딩하여 광고 에셋을 표시하고, 사용 후 광고 오브젝트 제대로 제거하여 네이티브 광고를 Android 앱에 통합할 수 있습니다.

네이티브 광고는 앱의 다른 콘텐츠 블렌딩 커스터마이즈 수 있는 광고 형태입니다. 이렇게 하면 광고가 더 자연스럽게 표시되므로 사용자 경험 리텐션 향상됩니다.

## 필수 조건##prerequisites

레벨플레이 SDK 7.9.0 이상을 애플리케이션 올바르게 연동했는지 확인합니다. 통합은 [여기](/grow/levelplay/sdk/android/sdk-integration.md) 설명되어 있습니다.

## 네이티브 광고 통합##integrate-native-ads

네이티브 광고를 연동하려면 다음 세 가지 주요 단계를 따르십시오. 

1. 네이티브 광고 로드
2. 보기 만들기 및 바인드
3. 네이티브 광고 제거

## 1단계. 네이티브 광고 로드##step-1.-load-a-native-ad

네이티브 광고 오브젝트 커스텀 설정 허용하는 LevelPlayNativeAd.Builder 클래스 사용하여 네이티브 광고 오브젝트 생성해야 합니다. 별도의 클래스 만들어 네이티브 광고 로딩 메커니즘을 한 곳에서 관리하는 것이 좋습니다. 

[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

다음으로 코드에 네이티브 광고 리스너를 구현합니다. 레벨플레이 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 버튼 등이 있습니다. 

각 네이티브 광고는 하나의 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

**개인정보 아이콘 -** 이 요소는 설계 과정에서 네이티브 광고의 왼쪽 하단 모서리에 포함되어야 합니다.

**광고 표시** - 사용자가 광고임을 이해하려면 네이티브 광고를 ‘광고’로 표시해야 합니다. 직접 표시를 추가하면 됩니다.

#### 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    | 어댑터    |
| ------------------------- | ------ | ------ |
| Google AdMob 및 Ad Manager | 22.1.0 | 4.3.38 |
| Meta                      | 6.14.0 | 4.3.43 |
