애드팝콘 SSP v3.0.12부터 지원하는 기능이므로, 연동 전 반드시 버전 확인을 부탁 드립니다.
1. SDK Grandle 설치
gradle을 이용하여 SDK 설정이 가능합니다.
allprojects {
repositories {
mavenCentral()
}
}
dependencies {
implementation 'com.igaworks.ssp:IgawAdPopcornSSP:3.0.13'
}
2. SDK 수동 다운로드 및 설치
위 Gradle 설정을 이용하지 않고 수동으로 SDK 다운로드 하고자 할 경우 아래 다운로드 링크를 통해 최신 안드로이드 SDK 패키지를 다운로드 합니다.
[애드팝콘 SSP SDK 다운로드]
다운로드 받은 .zip 파일을 압축해제하여 AdPopcornSSP~*.aar
파일을 안드로이드 스튜디오 프로젝트로 복사한 후 gradle 을 업데이트합니다.
SDK 복사 후 아래와 같이 build.gradle 에 dependiencies 를 추가하고 업데이트 합니다.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile(name: 'AdPopcornSSP_3.0.13a', ext: 'aar')
repositories { flatDir { dirs 'libs' } }
}
3. 매니페스트 설정
애드팝콘 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>
4. 필수 연동
애드팝콘 SSP에서는 광고 타입 별 연동을 진행하기 전에 기본 API를 이용하여 초기화 작업을 해야 합니다.
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);
}
2) 리소스 해제
destroy API
를 이용하여 어플리케이션이 종료될 때 메모리에 할당된 SSP 관련 리소스(View,Memory)를 해제합니다.
앱이 종료될 때 호출되는 activity의 onDestroy()
에서 호출합니다.
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
AdPopcornSSP.destroy();
}
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>
5. 원스토어 광고
원스토어 광고는 원스토어 커스텀 대응을 위해 생성한 광고 형식입니다.
1) 원스토어 광고 인스턴스 생성
import com.igaworks.ssp.part.custom.OneStoreAd;
import com.igaworks.ssp.part.custom.listener.ICustomAdListener;
import com.igaworks.ssp.part.custom.listener.IOneStoreAdEventCallbackListener;
private OneStoreAd onestoreAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
onestoreAd= new OneStoreAd (context);
}
2) Placement ID 설정
아래 코드를 추가하여 광고의 PLACEMENT ID 를 설정합니다.
onestoreAd.setPlacementId("원스토어AD_PLACEMENT_ID");
3) BappList 설정
아래 코드를 추가하여 해당 광고 지면에서 block할 app List를 설정합니다.
List<String> bappList = new ArrayList<String>();
bappList.add("com.test1");
bappList.add("com.test2");
oneStoreAd.setBAppList(bappList);
4) BcatList 설정
아래 코드를 추가하여 해당 광고 지면에서 block할 category List를 설정합니다.
List<String> bcatList= new ArrayList<String>();
bcatList.add("IAB23");
bcatList.add("IAB25");
oneStoreAd.setBCatList(bcatList);
5) Tag ID 설정
아래 코드를 추가하여 해당 광고 지면의 tagId를 설정합니다.
Default 값은 placementId 입니다.
// default : placementId
oneStoreAd.setTagId("testTag");
6) 광고 요청 개수(Plcmtcnt) 설정
아래 코드를 추가하여 해당 광고 지면에서 요청할 광고 수를 설정합니다.
oneStoreAd.setPlcmtcnt(10);
7) 이벤트 리스너
원스토어 광고 요청 후 발생하는 이벤트에 대한 리스너를 설정합니다. 제공되는 리스너와 구현 예시는 다음과 같습니다.
광고 로딩 성공 시, 미리 협의한 대로, onestore의 AID 정보를 List 형태로 전달함.
전달되는 에러코드는 아티클 하단의 테이블 참고
8) 광고 요청
원스토어 광고 노출을 원하는 시점에 loadAd()
API 를 호출하여 서버에 광고를 요청합니다.
9) 광고 노출 수집
광고 로딩 성공 후, 전달 받은 AID에 해당하는 광고가 노출될 경우, 각 광고마다 impression
API를 호출하여, 노출이 정상적으로 집계 되도록 합니다.
oneStoreAd.onImpression("노출된 AID");
10) 광고 클릭 수집
유저가 광고를 클릭 한 경우, 클릭된 광고의 AID에 대해 click
API를 호출하여, 클릭이 정상적으로 집계 되도록 합니다.
oneStoreAd.onClick("클릭된 AID");
11) 샘플 코드
import com.igaworks.ssp.part.custom.OneStoreAd;
import com.igaworks.ssp.part.custom.listener.ICustomAdListener;
import com.igaworks.ssp.part.custom.listener.IOneStoreAdEventCallbackListener;
private OneStoreAd onestoreAd;
private List<String> mOnestoreAIDList;
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
onestoreAd= new OneStoreAd (context);
onestoreAd.setPlacementId("원스토어AD_PLACEMENT_ID");
List<String> bappList = new ArrayList<String>();
bappList.add("com.test1");
bappList.add("com.test2");
oneStoreAd.setBAppList(bappList);
List<String> bcatList = new ArrayList<String>();
bcatList.add("IAB23");
bcatList.add("IAB25");
oneStoreAd.setBCatList(bcatList);
oneStoreAd.setEventListener(new IOneStoreAdEventCallbackListener(){
@Override
public void OnLoadSuccess(List<String> onestoreAIDList) {
Log.d("Sample", "OnLoadSuccess");
mOnestoreAIDList = onestoreAIDList;
}
@Override
public void OnLoadFailed(SSPErrorCode errorCode) {
Log.d("Sample", "OnLoadFailed");
}
});
oneStoreAd.loadAd();
// AID List의 0 번째 index의 광고가 클릭된 시점
oneStoreAd.onClick(mOnestoreAIDList.get(0));
}
private void impression(int index){
// AID List의 index 번째 광고가 노출된 시점
oneStoreAd.onImpression(mOnestoreAIDList.get(index));
}
private void click(int index){
// AID List의 index 번째 광고가 클릭된 시점
oneStoreAd.onClick(mOnestoreAIDList.get(index));
}
}
6. 응답 에러 코드