AdPie
  • AdPie
    • 시작하기
  • Android
    • 프로젝트 설정
    • 광고 연동
      • 배너 광고
      • 전면 광고
      • 네이티브 광고
      • 리워드 비디오 광고
    • 미디에이션
      • 구글 애드몹
      • 구글 애드 매니저
      • 앱러빈
    • 공통
      • 에러코드
      • 디버깅
    • 변경내역
  • iOS
    • 프로젝트 설정
    • iOS 14+ 대응
    • 광고 연동
      • 배너 광고
      • 전면 광고
      • 네이티브 광고
      • 리워드 비디오 광고
    • 미디에이션
      • 구글 애드몹
      • 구글 애드 매니저
      • 앱러빈
    • 공통
      • 에러코드
      • 디버깅
      • 타겟팅
    • 변경내역
  • Flutter
    • 프로젝트 설정
    • 광고 연동
      • 배너 광고
      • 전면 광고
      • 리워드 비디오 광고
    • 공통
      • 에러코드
    • 변경내역
  • Unity
    • 프로젝트 설정
    • 광고 연동
      • 배너 광고
      • 전면 광고
      • 리워드 비디오 광고
    • 공통
      • 에러코드
    • 변경내역
  • Exchange
    • For Buyers
Powered by GitBook
On this page
  • 1 : 준비
  • 2 : 이미지 모듈 설정
  • 3 : 레이아웃 관련 설정
  • 4 : 광고 요청과 표출
  • 5 : 광고 타겟팅
  • 6 : 광고 리스너 사용
  • 7 : 이미지 직접 핸들링
  1. Android
  2. 광고 연동

네이티브 광고

1 : 준비

  • 프로젝트 설정을 통해 광고 연동을 위한 준비를 한다.

2 : 이미지 모듈 설정

  • SDK에서는 이미지 모듈로 Glide가 포함되어 있다면 사용하도록 되어있다.

  • GIF 이미지 처리가 가능하고, 메모리 사용에 효율적인 Glide 사용을 권장한다.

  • 이미지를 직접 핸들링하고자 한다면 해당 Step은 건너뛰고, 페이지 하단의 이미지 직접 핸들링을 확인한다.

  • Glide 의 경우 v4.4 이상 지원하고 v4.4 미만의 버전은 지원을 중단하여 캐싱되지 않은 상태로 로딩한다.

  • build.gradle 파일에 아래와 같이 추가를 한다.

dependencies {
    // Glide 사용시
    compile 'com.github.bumptech.glide:glide:4.+'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.+'
}

3 : 레이아웃 관련 설정

1. 광고요소 선택

  • 네이티브 광고의 요소 (① 아이콘 ② 제목 ③ 설명 ④ 메인 ⑤ 액션버튼) 중 사용할 요소를 미리 결정한다.

  • 단, ① 아이콘 ② 제목 ③ 설명 ④ 메인 중 최소 하나는 필수적으로 들어가야 하며, 선택한 요소에 따라 광고 물량에 차이가 발생한다.

  • ⑤ 액션버튼 이 없을 때보다 있을 때 CTR이 높게 나오기에 가능한 넣는 것을 추천한다.

  • ⑥ 옵트아웃 은 자동으로 우측 상단에 붙이고 있기에 텍스트 영역과 겹치지 않도록 고려해야 한다. (옵트아웃 이미지 크기 : 14dp, 상단 및 우측 여백 : 5dp)

  • ⑥ 옵트아웃 의 위치와 크기를 바꾸려면 XML과 NativeAdViewBinder 에 넣어주어야 하며 크기는 정사이즈로 만든다.

  • 대시보드를 통해 슬롯을 생성하는 과정에서 슬롯유형에 네이티브(Native)를 선택하고, 네이티브 유형을 체크를 한다.

  • 네이티브 유형은 앞서 선택한 필수 요소 (① 아이콘 ② 제목 ③ 설명 ④ 메인)에 해당된다.

  • 체크한 유형은 XML과 NativeAdViewBinder 에 필수로 들어가야 광고를 성공적으로 받아볼 수 있다.

2. XML 정의

  • 아래의 예시는 광고의 요소(아이콘, 제목, 설명, 메인)이 놓여질 형태를 나타낸 것으로, 광고를 보여줄 layout 파일을 생성하여 정의를 한다.

  • 네이티브 광고 템플릿 파일인 res/layout/adpie_native_ad_template.xml를 참고하여 원하는 형태로 레이아웃을 구성한다.

<RelativeLayout ...>

    <!-- 옵트아웃 (Opt-out) -->
    <ImageView
            android:id="@+id/native_optout" ... />

    <!-- 아이콘 (Icon) -->
    <ImageView
            android:id="@+id/native_ad_icon" ... />

    <!-- 제목 (Title) -->
    <TextView
            android:id="@+id/native_ad_title" ... />

    <!-- 설명 (Description) -->
    <TextView
        android:id="@+id/native_ad_description" ... />

    <!-- 메인 이미지 (Main) -->
    <com.gomfactory.adpie.sdk.nativeads.MainAdView
        android:id="@+id/native_ad_main" ... />

    <!-- 액션버튼 (Call-To-Action) -->
    <Button
        android:id="@+id/native_ad_cta" ... />

</RelativeLayout>

3. NativeAdViewBinder 생성

  • NativeAdViewBinder 객체를 생성하고, xml에 정의한 Layout ID와 광고 요소별 id(icon, title, description, main)를 설정한다.

NativeAdViewBinder viewBinder = new NativeAdViewBinder.Builder(R.layout.adpie_native_ad) // Layout ID
    .setIconImageId(R.id.native_ad_icon) // Icon ID
    .setTitleId(R.id.native_ad_title) // Title ID
    .setDescriptionId(R.id.native_ad_description) // Description ID
    .setMainId(R.id.native_ad_main) // Main ID
    .setCallToActionId(R.id.native_ad_cta) // Call-To-Action ID
    .setOptOutId(R.id.native_optout) // Opt-out ID
    .build();

4 : 광고 요청과 표출

  • SDK 초기화를 하지 않았다면, 사이트에서 발급받은 Media ID를 입력하여 초기화를 해준다.

  • 사이트에서 발급받은 Slot ID와 앞서 생성한 NativeAdViewBinder 객체를 인자값으로 넣어 NativeAd 객체를 생성한다.

private NativeAd nativeAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // SDK 초기화로 앱실행 1회만 호출한다. (Main Activity 에 필수로 입력한다.)
        AdPieSDK.getInstance().initialize(getApplicationContext(), "AdPie-Media-ID");
        
        ...
        
        NativeAdViewBinder viewBinder = new NativeAdViewBinder.Builder(R.layout.adpie_native_ad) // Layout ID
                .setIconImageId(R.id.native_ad_icon) // Icon ID
                .setTitleId(R.id.native_ad_title) // Title ID
                .setDescriptionId(R.id.native_ad_description) // Description ID
                .setMainId(R.id.native_ad_main) // Main ID
                .setCallToActionId(R.id.native_ad_cta) // Call-To-Action ID
                .setOptOutId(R.id.native_optout) // Opt-out I
                .build();
        
        // 광고 연동을 위한 슬롯 ID를 필수로 입력한다.
        nativeAd = new NativeAd(this, "AdPie-Slot-ID", viewBinder);
        // 광고 호출
        nativeAd.loadAd();
}

5 : 광고 타겟팅

  • 타겟팅 적용으로 보다 높은 수익을 얻을 수 있다.

  • 형태 : 성별, 위치, 나이 또는 출생일(YYYY)

TargetingData targetingData = new TargetingData.Builder()
    .setGender(TargetingData.Gender.MALE)
    .setAge(30)
    .setYearOfBirthday(1970)
    .build();
// 광고 요청시 타겟팅 정보를 넣어준다.
nativeAd.loadAd(targetingData);

6 : 광고 리스너 사용

  • 광고 요청에 대한 이벤트를 수신할 수 있다.

  • 광고 성공 또는 실패 이벤트를 전혀 못받는 경우 페이지 하단의 이미지 직접 핸들링을 확인하여 적용한다.

  • 에러코드를 통해 광고 실패에 대한 이유를 알 수 있다.

nativeAd.setAdListener(new com.gomfactory.adpie.sdk.NativeAd.AdListener() {
        @Override
        public void onAdLoaded(final NativeAdView nativeAdView) {
            // 광고 로딩 완료 후 이벤트 발생
            // 광고 요청 후 즉시 노출하고자 할 경우 아래의 코드를 추가한다.

            ViewGroup adContainer = (ViewGroup)findViewById(R.id.ad_container);
            adContainer.removeAllViews();
            adContainer.addView(nativeAdView);
        }

        @Override
        public void onAdFailedToLoad(int errorCode) {
            // 광고 요청 또는 표출 실패 후 이벤트 발생
            // error message -> AdPieError.getMessage(errorCode)
        }

        @Override
        public void onAdShown() {
            // 광고 표출 후 이벤트 발생
        }

        @Override
        public void onAdClicked() {
            // 광고 클릭 후 이벤트 발생
        }
    });

7 : 이미지 직접 핸들링

  • SDK를 통해 이미지 다운로드를 바로 진행하는 것은 기본 설정이다.

  • 만약 직접 핸들링하고자 한다면, Step 4에서 NativeAd 객체 생성 후 setSkipDownload(true) 를 호출한다.

  • setSkipDownload(true) 호출시 이미지 모듈의 우선순위는 무시되고, 이미지 다운로드를 건너뛴다.

  • 광고 리스너를 통해 onAdLoaded() 받으면, 이미지를 직접 호출 및 설정해야 한다.

// 광고 연동을 위한 슬롯 ID를 필수로 입력한다.
nativeAd = new NativeAd(this, "AdPie-Slot-ID", viewBinder);

// SDK에서 리소스 다운로드를 하지 않기 위한 설정
nativeAd.setSkipDownload(true);
// 광고 리스너 사용
nativeAd.setAdListener(new com.gomfactory.adpie.sdk.NativeAd.AdListener() {
        @Override
        public void onAdLoaded(final NativeAdView nativeAdView) {

            // 이미지 다운로드 및 설정이 필요
            NativeAdData nativeAdData = nativeAdView.getNativeAdData();
            String iconImageUrl = nativeAdData.getIconImageUrl();
            ImageView iconImageView = nativeAdView.getIconImageView();
            String mainImageUrl = nativeAdData.getMainImageUrl();
            ImageView mainImageView = nativeAdView.getMainImageView();
        }
    });
// 광고 호출
nativeAd.loadAd();
Previous전면 광고Next리워드 비디오 광고

Last updated 8 months ago

네이티브 샘플
네이티브 유형