Adfit Bizboard 연동 가이드

Adfit Bizboard 네이티브 연동만을 사용하고자 할 경우, 아래의 순서대로 연동을 진행하시면 됩니다.

1. AdPopcornSSP / Adfit SDK 다운로드

1) SDK gradle 설치

gradle을 이용하여 SDK 설정이 가능합니다.

allprojects {
    repositories {
        mavenCentral()
	google()
        jcenter()
        maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
    }
}

2. 매니페스트 설정

애드팝콘 SSP를 이용하기 위한 내용을 AndroidManifest.xml 파일에 추가합니다.

1) 앱키 추가

애드팝콘 SSP 콘솔페이지에서 앱 등록 후 발급받은 앱 키를 <application></application> 태그 안에 추가합니다.

<application>
... 
<meta-data android:name="adpopcorn_ssp_app_key" android:value="이곳에_앱키를_입력하세요" /> 
...
</application>

2) 퍼미션 추가

<manifest></manifest> 태그 안에 필수 퍼미션을 추가합니다.

<manifest>
... 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...
</manifest>

3) 안드로이드 9.0 HTTP 통신 대응

Android P 부터 일반 텍스트 트래픽(암호화 되지 않은 HTTP)은 기본적으로 차단 됩니다.

SSP에서 취급하는 광고는 기본적으로 HTTPS를 사용하고 있으나 미디에이션 광고에서는 HTTPS 사용 여부를 확신할 수 없기 때문에 AndroidManifest.xml 파일에 아래 설정을 추가 부탁 드립니다.

<manifest> 
<application android:networkSecurityConfig="@xml/network_security_config"> 
     ... 
</application>
</manifest>

4) 네트워크 보안 구성 파일 추가

네트워크 보안 구성 기능은 res/xml/network_security_config.xml 파일에 아래 설정을 추가 부탁 드립니다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config> <base-config cleartextTrafficPermitted="true" />
</network-security-config>

3. 필수 코드 연동

1) SSP SDK 초기화

init API를 어플리케이션 실행 후 최초로 로드되는 activity 혹은 SSP 광고를 노출하고자 하는 activity에서 호출하여 SDK를 초기화합니다.

단, init 중복 호출 시, 그 사이에 세팅된 광고가 초기화 됨으로 중복 호출을 방지하고자 할 때에는 isInitialized API를 통해 초기화 작업이 완료된 상태인지 체크하시기 바랍니다.

if(AdPopcornSSP.isInitialized(MyDisplayAdSampleActivity.this){
	// Already SSP SDK initialized
}
else{
	AdPopcornSSP.init(MyDisplayAdSampleActivity.this);
}

InAppBidding을 사용하는 매체의 경우 아래 init API를 사용해, 초기화를 진행해 주어야 합니다.

그렇지 않을 경우, InAppBidding을 사용하는 placement 지면에 대한 업데이트가 이루어지지 않아, inAppBidding이 동작하지 않습니다.

if(AdPopcornSSP.isInitialized(MyDisplayAdSampleActivity.this){
      // Already SSP SDK initialized
}
else{
    AdPopcornSSP.init(MyDisplayAdSampleActivity.this, new SdkInitListener() {
      @Override
      public void onInitializationFinished() {
          // init 작업이 완료 된 뒤, 광고 로드 작업을 진행해 주시기 바랍니다.
      }
  });
}

2) 리소스 해제

destroy API를 이용하여 어플리케이션이 종료될 때 메모리에 할당된 SSP 관련 리소스(View,Memory)를 해제합니다.

앱이 종료될 때 호출되는 activity의 onDestroy()에서 호출합니다.

@Override
protected void onDestroy() {	
		// TODO Auto-generated method stub	
		super.onDestroy();	
		AdPopcornSSP.destroy();
}

4. 네이티브 BizBoard 연동

1) 네이티브 XML 레이아웃(native_ad_mediation_layout.xml) 설정

AdPopcornSSPNativeAd View 안에 사용하고자 하는 Adfit Bizboard 영역을 지정한 뒤 해당 레이아웃을 원하는 화면(main layout)의 레이아웃에 포함시켜 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<com.igaworks.ssp.part.nativead.AdPopcornSSPNativeAd
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/adpopcorn_native_ad"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <!-- AdFit BizBoard -->
    <com.kakao.adfit.ads.na.AdFitBizBoardAdTemplateLayout
        android:id="@+id/adFitNativeAdView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</com.igaworks.ssp.part.nativead.AdPopcornSSPNativeAd>

2) Placement ID 설정

XML로 생성한(native_ad_mediation_layout.xml) AdPopcornSSPNativeAd에 placement ID 설정

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adPopcornSSPNativeAd = (AdPopcornSSPNativeAd) findViewById(R.id.adpopcorn_native_ad);
    adPopcornSSPNativeAd.setPlacementId("8n12virz5gmkwqr");
}

3) setAdFitViewBinder API 호출

native_ad_mediation_layout.xml에서 생성한 Adfit Bizboard 영역 정보를 AdPopcornSSP SDK에 설정해 줍니다.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adPopcornSSPNativeAd = (AdPopcornSSPNativeAd) findViewById(R.id.adpopcorn_native_ad);
    adPopcornSSPNativeAd.setPlacementId("8n12virz5gmkwqr");

    AdFitViewBinder adFitViewBinder = new AdFitViewBinder.Builder(R.id.adFitNativeAdView)
        .bizBoardAd(true)
        .build();
    adPopcornSSPNativeAd.setAdFitViewBinder(adFitViewBinder);
}

AdFitViewBinder Builder 생성 시, view id(R.id.adFitNativeAdView)는 필수로 넘겨주어야 하며, bizBoardAd(true)를 반드시 설정해야 합니다.

4) 광고 요청

loadAd API를 통해 광고를 요청합니다.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adPopcornSSPNativeAd = (AdPopcornSSPNativeAd) findViewById(R.id.adpopcorn_native_ad);
    adPopcornSSPNativeAd.setPlacementId("8n12virz5gmkwqr");

    AdFitViewBinder adFitViewBinder = new AdFitViewBinder.Builder(R.id.adFitNativeAdView)
        .bizBoardAd(true)
	.build();
    adPopcornSSPNativeAd.setAdFitViewBinder(adFitViewBinder);
    adPopcornSSPNativeAd.loadAd();
}

5) 광고 이벤트 리스너

네이티브 광고에서 발생하는 이벤트를 받고자 할 경우 , 이벤트 리스너를 생성하여 전달해 줍니다. 이벤트 리스너를 통해 들어오는 이벤트들을 아래와 같습니다.

이벤트 리스너설명

onNativeAdLoadSuccess

네이티브 광고 요청 성공 시

onNativeAdLoadFailed

네이티브 광고 요청 실패 시. 에러코드 값

onImpression

네이티브 광고가 화면에 노출되었을 때

onClicked

네이티브 광고를 클릭 했을 때

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adPopcornSSPNativeAd = (AdPopcornSSPNativeAd) findViewById(R.id.adpopcorn_native_ad);
    adPopcornSSPNativeAd.setPlacementId("8n12virz5gmkwqr");
    
    AdFitViewBinder adFitViewBinder = new AdFitViewBinder.Builder(R.id.adFitNativeAdView)
                .bizBoardAd(true)
                .build();
    adPopcornSSPNativeAd.setAdFitViewBinder(adFitViewBinder);
    adPopcornSSPNativeAd.loadAd();

    adPopcornSSPNativeAd.setNativeAdEventCallbackListener (new INativeAdEventCallbackListener () {
		@Override
		public void onNativeAdLoadSuccess () {
		}
		
		@Override
		public void onNativeAdLoadFailed (SSPErrorCode errorCode) {
		}
		
		@Override
		public void onImpression () {
		}
		
		@Override
		public void onClicked () {
		}
     });
}

Adfit의 경우 onImpression, onClicked 이벤트가 지원되지 않아 발생하지 않습니다.

6) 네이티브 광고 종료

네이티브 광고 인스턴스를 더 이상 사용하지 않을 경우, destroy API를 호출하여 줍니다.

adPopcornSSPNativeAd.destroy();

7) RecyclerView 샘플 앱

추가로 궁금하신 사항은 monetize@adpopcorn.com 으로 문의 주시기 바랍니다.

Last updated