네이티브 광고
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();
Last updated