+ All Categories
Home > Documents > TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한...

TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한...

Date post: 21-Sep-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
21
TnkAd SDK Integration Guide for Android V 2.0 http://www.tnkfactory.com !!필독 !! - Proguard사용하실 경우 Proguard 설정내에 아래 내용을 반드시 넣어주세요. -keep class com.tnkfactory.** 주요 변경 내용 V 2.0 (2013/04/17) - Callback URL 파라메터 정의 V 1.5 (2012/07/11) - UI 변경 스타일 추가 V 1.1.1 (2012/04/20) - Featured Ad (전면광고) 기능 추가 (3.4 참고) - 내부 단말 ID 관련 수정 - 주의 !! : 아래와 같이 권한 내용을 AndroidMenifest.xml 파일에 추가해야함 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> V 1.1.0 (2012/03/23) - 일괄 설치확인 API 추가 (3.2.5 참고) V 1.0.4 (2011/11/10) - 동영상 광고 기능 추가 - 주의 !! : 동영상 광고 관련하여 게시앱은 다음의 Activity권한내용을 반드시 AndroidMenifest.xml 파일에 추가해야함 <activity android:name="com.tnkfactory.ad.AdMediaActivity" android:screenOrientation="landscape"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Transcript
Page 1: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

TnkAd SDK Integration Guidefor Android

V 2.0http://www.tnkfactory.com

!!필독 !!- Proguard를 사용하실 경우 Proguard 설정내에 아래 내용을 반드시 넣어주세요.

-keep class com.tnkfactory.**

주요 변경 내용

V 2.0 (2013/04/17) - Callback URL 파라메터 재 정의

V 1.5 (2012/07/11) - UI 변경 및 스타일 추가

V 1.1.1 (2012/04/20) - Featured Ad (전면광고) 기능 추가 (3.4 참고) - 내부 단말 ID 관련 수정 - 주의 !! : 아래와 같이 권한 내용을 AndroidMenifest.xml 파일에 추가해야함<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />V 1.1.0 (2012/03/23) - 일괄 설치확인 API 추가 (3.2.5 참고)V 1.0.4 (2011/11/10) - 동영상 광고 기능 추가 - 주의 !! : 동영상 광고 관련하여 게시앱은 다음의 Activity와 권한내용을 반드시 AndroidMenifest.xml 파일에 추가해야함

<activity android:name="com.tnkfactory.ad.AdMediaActivity" android:screenOrientation="landscape"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Page 2: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

1.개요

TnkAd의 SDK(이하 Tnk SDK)를 사용하여 광고 게시용 앱과 광고용 앱을 모두 개발할 수 있다. 본 문서는 안드로이드 개발자가 Tnk SDK를 사용하여 어떻게 광고 게시 또는 광고 앱을 개발하는지에 대한 자세한 내용을 제공한다.

광고 앱 중 단순 설치형 광고만을 원할 경우에는 Tnk SDK를 탑제할 필요가 없으며 그 외의 설치 실행 형 또는 액션 수행 형 광고의 경우에는 반드시 Tnk SDK를 탑재하여야 한다.

TnkAd 광고앱 및 게시앱 처리 흐름도

Page 3: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

2.공통 사항 2.1. TnkAd SDK 다운로드

Tnk SDK는 TnkAd 웹사이트(http://www.tnkfactory.com) 회원 가입 후 다운받아 이용할 수 있다. Tnk SDK 배포본은 다음과 같이 SDK 자체와 다양한 적용 샘플들을 포함한다.

폴더명 내용

Lib Android 용 TnkAd SDK인 tnkad-sdk.jar 파일을 포함한다.

TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다.

TnkAdvertiser SDK를 사용하여 구현한 데모용 샘플 광고용 어플리케이션이다.

2.2. 앱 등록하기 TnkAd에서는 게시용 앱과 광고용 앱을 구별하지 않고 하나의 앱으로 관리한다. 즉 하나의 앱이 광고를 게시하면서 또한 동시에 자신이 광고 앱이 될 수도 있다.

그러므로 게시용 앱/광고용 앱 상관없이 우선 앱 기본정보를 등록해야한다. TnkAd 사이트에 로그인 한 후 앱리스트에서 [신규앱 등록] 버튼을 누른다.

입력항목은 다음과 같다.

• 앱 이름 : 광고로 게시될 때 목록에 나타나는 이름이다.• 로고 이미지 : 광고로 게시될 때 목록에 이름과 함께 나타나는 앱 로고 이미지이다. 실제 앱의 로고 이미지를 사용하도록 한다. (권장 크기는 72x72 pixel)

• 카테고리 : 앱의 카테고리 정보를 입력한다. 광고 타케팅 시에 사용되므로 정확이 입력하도록 한다.

• 주 사용자 성별 : 앱의 주 사용자 성별을 선택한다. 광고 타게팅 시에 사용되는 정보이다.• 등급 : 앱 사용 등급(사용 나이 제한)이다. 광고 타게팅 시에 사용되는 정보이다.• 플랫폼 : 안드로이드 또는 웹을 선택한다. 웹 사이트 광고인 경우 웹을 선택한다.• 패키지 : 안드로이드 앱의 패키지 명을 입력한다. 플랫폼이 웹인 경우에는 웹사이트의 주소를 입력한다.

• 버전 : 앱의 버전 정보를 입력한다.• 무료여부 : 앱의 무료 앱인지 유료앱인지 선택한다. 광고로 게시될 때 무료여부가 같이 나타난다.

• 설명 : 앱의 상세 설명문을 입력한다. 광고 게시 후 사용자가 상세보기 시에 나타나는 설명문이다.

항목들은 모두 입력하고 등록 버튼을 누르면 앱이 등록된다. 등록 후 기본정보 탭에서 입력한 정보를 확인하거나 수정할 수 있다.

Page 4: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

등록 후 앱 이름 아래에 App Id와 App Key를 확인 할 수 있다. App Id는 TnkAd가 등록된 어플리케이션들을 식별하기 위하여 사용하는 유일한 ID 값이다. App Key는 SDK 내부에서 적법한 어플리케이션인지 확인하기 위하여 사용되는 일종의 key 값으로 인증용으로 사용되므로 외부에 노출되지 않도록 한다.

2.3. 라이브러리 등록Tnk SDK를 사용하기 위하여 다음과 같이 앱의 프로젝트 구성을 진행한다.

• Tnk SDK(tnkad-sdk.jar)를 다운받아 원하는 위치에 저장한다.• 앱의 프로젝트를 선택 한 후 메뉴의 Project > Properties > Java Build Path >

Libraries 탭 > Add External JARS 버튼 클릭 후 tnkad-sdk.jar 를 선택한다.

2.4. Manifest 파일 설정앱의 AndroidManifest.xml 파일을 열어서 다음과 같이 설정한다.

• <application> tag 안에 다음과 같이 meta-data로 App Id 값을 설정한다.

Page 5: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

<application> ... <meta-data android:name="tnkad_app_id" android:value="60004040-7061-8312-2138-160704040004" /></application>

• App Id는 TnkAd 웹사이트의 어플리케이션 기본정보에서 확인할 수 있다.

• <application> tag 바깥에 다음과 같이 permission 들을 추가한다. 이 permisssion들은 Tnk SDK의 기능이 동작하기 위하여 반드시 필요한 권한들이므로 반드시 추가하도록 한다. (게시앱의 경우 6개 권한이 모두 필요하며, 광고앱은 상위 3개 권한만 필요함)

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

• Tnk SDK가 올바르게 동작하기 위하여 minSdkVersion을 4 이상으로 설정한다.

<uses-sdk android:minSdkVersion="4" />

Page 6: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

3.게시 앱(Publisher App)

3.1. 게시 정보 등록광고를 앱에 게시하기 위하여 우선 TnkAd 웹페이지에 게시 정보를 설정한다. 게시 정보를 설정하기 전에 우선 앱의 기본 정보가 등록되어 있어야 한다.

앱 리스트에서 앱을 선택한 후 게시 정보 탭을 선택한다. 게시 정보 탭화면에서 다시 게시 등록 버튼을 누른다.

입력 항목은 다음과 같다.

• In House : 만약 다른 광고앱들을 가지고 있고 자신의 광고앱만 광고로 게시하기를 원한다면 In House를 체크한다.

• 포인트 전환 비율 : 자신의 앱에서 사용하는 포인트의 가격 비율을 입력한다. 100원에 해당되는 포인트 수치를 입력하면 광고 목록에 광고앱이 지급하는 금액을 포인트 수치로 환산하여 사용자에게 보여준다.

• 포인트 명칭 : 자신의 앱에서 사용하는 포인트의 명칭을 입력한다.• 포인트 자체관리 : 광고앱을 통하여 지급된 포인트는 TnkAd의 시스템에서 관리해 주지만 원하는 경우 게시앱의 서버에서 직접 관리할 수 있다. 이 경우 포인트 자체 관리에 체크하고 아래의 자체관리 URL을 입력하도록 한다.

• 자체관리 URL : 지급되는 포인트를 게시앱의 서버에서 자체적으로 관리하고자 할 경우 자체관리 URL을 입력한다. TnkAd 서버는 광고앱을 통하여 지급되는 포인트를 입력한 URL을 통하여 게시앱의 서버에 전달한다.

• 타마켓 제외 : 안드로이드 마켓이나 이통사 마켓을 통하여 설치되는 앱들을 광고 목록에서 제외 시키고자 할 경우 체크하도록한다. (이 경우 웹 광고들만 광고목록에 보여진다.)

• 타마켓 제외 버전별 설정 : 매체 앱의 버전에 따라서 타마켓 제외를 다르게 설정하고자 할 경우 설정할 수 있다. 또한 버전 별로 게시상태를 다르게 할 경우에도 같이 설정이 가능하다.

• 광고 필터 : 제목에 특정 단어를 포함하는 앱이나 특정 회사의 앱을 광고목록에서 제외할 수 있다. 원하는 단어들을 공백없이 , 로 구분하여 나열한다. 성인 앱을 제외하고자 할 경우에는 19를 입력한다.

Page 7: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

위의 항목들을 입력하고 저장 버튼을 클릭하면 입력 항목들이 저장되고 게시 상태가 ‘테스트’로 변경된다. 테스트 상태는 정상적인 게시 상태와 다음의 사항들이 다르게 동작한다.

• 테스트 상태에서도 모든 동작은 정상 게시 상태와 동일하게 동작하며 따라서 사용자가 광고앱을 통하여 정상적인 포인트를 지급받을 수 있다.

• 다만 테스트 상태에서는 실제로 비용이 정산되어 지급되지 않는다.

테스트 상태에서 테스트가 완료되면 게시 시작 버튼을 눌러서 정상적인 게시 상태로 전환하도록 한다.

3.2. 게시앱 구현하기게시앱에서 광고를 띄우기 위하여 Tnk SDK가 제공하는 AdWallActivity와 AdMediaActivity를 사용한다. 이 둘을 Menifest 파일에 <activity>로 등록한다.

<activity android:name="com.tnkfactory.ad.AdWallActivity" /><activity android:name="com.tnkfactory.ad.AdMediaActivity" android:screenOrientation="landscape"/>

3.2.1 게시앱의 사용자 정보 설정(Optional)

게시앱이 관리하는 사용자 고유 ID 등의 정보를 TnkSession에 설정해 두면 해당 정보가 Tnk 서버로 전달되어 추후 아이템 거래내역에서 같이 확인할 수 있으며, 포인트 자체관리 하는 경우에는 포인트 전달 URL 호출 시 설정한 Id를 같이 전달 받을 수도 있다.

• TnkSession.setUserName(Context context, String userName)

Page 8: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

3.2.2 광고목록 띄우기

광고 목록을 띄우기 위하여 TnkSession.showAdList() 함수를 호출한다.

• TnkSession.showAdList(Context context, String title) 또는• TnkSession.showAdList(Context context)

◦ 설명 : AdWallActivity를 띄운다.◦ context : 게시앱의 Activity 객체이다.◦ title : 원하는 타이틀 문자열을 지정한다. (기본값 : ‘무료 포인트 받기’)◦ 적용 예시 : 게시앱의 버튼을 누르면 AdWallActivity를 띄운다.

@Overridepublic void onCreate(Bundle savedInstanceState) {

// ... omitted ...

final Button button = (Button)findViewById(R.id.main_ad); button.setOnClickListener(new OnClickListener() { @Override

public void onClick(View v) {TnkSession.showAdList(MainActivity.this,"무료 포인트 받기");

} });

◦ 화면 예시

Page 9: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

3.2.3 게시 상태 확인하기

게시앱이 광고 게시를 중단 할 경우에는 AdWallActivity를 띄워도 그 안에는 광고 목록이 나타나지 않는다. 그러므로 향후 광고 게시를 중단 할 경우를 대비하여 AdWallActivity를 띄우는 버튼 자체를 보이지 않게 하는 기능을 갖추는 것이 바람직하다. 이를 위하여 현재 게시 상태를 확인하고 게시 중인 경우에만 광고 띄우는 버튼을 나타나게 할 수 있다.

• TnkSession.queryPublishState(Context context, boolean showProgress, ServiceCallback callback)◦ 설명 : 현재 게시 상태를 TnkAD 서버에 요청하고 결과를 받으면 callback을 호출한다. 비동기 방식으로 동작한다.

◦ context : 게시 앱의 Activity 객체◦ showProgress : 비동기 방식으로 동작하므로 서버에서 결과가 올 때까지

progress Dialog를 띄울지 말지를 지정한다. true 이면 progress dialog를 띄우고 false이면 띄우지 않는다.

◦ callback : 서버에서 결과를 받으면 처리할 로직을 기술한다.◦ 적용 예시

@Overridepublic void onCreate(Bundle savedInstanceState) {

// ... omitted ...

final Button button = (Button)findViewById(R.id.main_ad); button.setOnClickListener(new OnClickListener() { @Override

public void onClick(View v) {TnkSession.showAdList(MainActivity.this,"무료 포인트 받기");

} }); TnkSession.queryPublishState(this, false, new ServiceCallback() {

@Overridepublic void onReturn(Context context, Object result) {

int state = (Integer)result;if (state == TnkSession.STATE_YES) {

button.setVisibility(View.VISIBLE);}

} });

또한 광고 목록이 하나 이상 있는 경우에만 버튼이 나타나게하고자 할 경우에는 아래의 API를 사용하면 현재 사용자에게 제공할 수 있는 광고 수를 확인할 수 있다.

• TnkSession.queryAdvertiseCount(Context context, boolean showProgress, ServiceCallback callback)◦ 설명 : 현재 게시앱에서 사용가능한 광고 수와 적립포인트 총 합계를 받을 수 있다. 요청 결과를 받으면 callback의 onRetuen()이 호출되며 이때 전달되는 값은 int[2] 배열로 첫번째에는 광고 건수, 두번째에는 적립가능한 포인트 합계가 담겨 있다. 게시앱이 현재 게시상태가 아닌 경우라면 int[0] 값이 0으로 담겨있다. 참고로 전달된 포인트 합계는 실제 값과 오차가 있을 수 있으므로 참고용으로만 사용한다.

◦ context : 게시 앱의 Activity 객체◦ showProgress : 비동기 방식으로 동작하므로 서버에서 결과가 올 때까지

progress Dialog를 띄울지 말지를 지정한다. true 이면 progress dialog를 띄우고 false이면 띄우지 않는다.

◦ callback : 서버에서 결과를 받으면 처리할 로직을 기술한다.3.2.4 포인트 조회, 인출 및 아이템 구매 기능

사용자가 광고를 통하여 획득한 포인트는 TnkAD 서버에서 관리되거나 또는 게시앱이 자체적으로 관리할 수 있다. 게시 정보 등록시 ‘포인트 자체관리’ 항목을 체크하지 않았다면 포인트는

Page 10: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

TnkAD 서버에서 관리되며 현재 사용자가 보유한 포인트를 조회하기 위하여 다음의 API를 사용한다.

• TnkSession.queryPoint(Context context, boolean showProgress, ServiceCallback callback) ◦ 설명 : 현재 사용자가 광고를 통하여 획득한 포인트를 반환한다. 비동기 방식으로 동작하므로 서버에서 결과 도착했을 때 수행할 callback을 지정한다.

◦ context : 게시 앱의 Activity 객체◦ showProgress : 비동기 방식으로 동작하므로 서버에서 결과가 올 때까지

progress Dialog를 띄울지 말지를 지정한다. true 이면 progress dialog를 띄우고 false이면 띄우지 않는다.

◦ callback : 서버에서 결과를 받으면 처리할 로직을 기술한다. Callback 수행은 UI 쓰레드에서 실행되므로 화면 관련 처리를 수행할 수 있다.

◦ 적용 예시

@Overridepublic void onCreate(Bundle savedInstanceState) {

// ... omitted ...

final TextView pointView = (TextView)findViewById(R.id.main_point); TnkSession.queryPoint(this, true, new ServiceCallback() {

@Overridepublic void onReturn(Context context, Object result) {

Integer point = (Integer)result;pointView.setText(String.valueOf(point));

}});

• TnkSession.queryPoint(Context context)◦ 설명 : 현재 사용자가 광고를 통하여 획득한 포인트를 반환한다. 동기 방식으로 동작하므로 서버에서 결과가 올 때까지 block된다.

◦ 리턴 값 : int (포인트)◦ context : Context 객체◦ 주의 사항 : 게임 앱과 같이 별도 thread를 사용하여 화면을 그려주는 경우 해당

thread에서는 앞의 비동기 방식의 API를 사용할 수 없으므로 반드시 동기 방식의 API를 사용해야한다. 이때 동기방식으로 인하여 화면이 멈추는 현상을 방지하기 위하여 다음과 같이 별도 Thread를 생성하여 호출하는 것이 바람직하다.

static public void getPoint(){ new Thread() { public void run() { int point = TnkSession.queryPoint(m_Activity); tnkAdReturn(point); // 결과를 받아서 필요한 로직을 수행한다. } }.start();}

TnkAD 서버에서 관리되는 포인트를 사용하여 게시앱이 제공하는 아이템을 구매할 수 있다. TnkAD 서버에서는 게시앱의 아이템을 관리하지는 않지만 다음의 API를 사용하여 포인트를 사용하는 방식으로 아이템 구매 기능을 구현한다.

• TnkSession.purchaseItem(Context context, int pointCost, String itemId)◦ 설명 : TnkAd 서버에서 관리되는 포인트를 사용하여 item을 구매한다. 동기 방식이다. 입력 파라메터는 아래 비동기 방식을 참고한다.

◦ 리턴 : long[2] 배열, long[0] 값은 구매후 남은 포인트 값이며 long[1]은 고유한 거래 Id가 담겨있다. long[1] 값이 음수인 경우 포인트 부족 등으로 인하여 구매가 수행되지 못했음을 의미한다.

Page 11: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

• TnkSession.purchaseItem(Context context, int pointCost, String itemId, boolean showProgressDialog, ServiceCallback callback)

• TnkSession.purchaseItem(Context context, int pointCost, String itemId, String userName, boolean showProgressDialog, ServiceCallback callback)◦ 설명 : TnkAd 서버에서 관리되는 포인트를 사용하여 item을 구매한다. 비동기 방식이다.

◦ context : Context 객체◦ pointCost : 소비할 포인트◦ itemId : 구매할 item의 고유ID, item Id는 게시엡이 정해서 부여한다. 전달된 itemId는 Tnk 보고서의 아이템 거래 내역에 함께 보여진다.

◦ userName : (옵션항목) 게시앱에서 자체적으로 사용자를 식별하는 ID 등이 있는 경우 이를 파라메터로 전달해 주면 Tnk의 보고서 페이지의 아이템 거래내역 화면에서 이를 함께 확인할 수 있다.

◦ showProgress : true 이면 progress dialog를 띄우고 false이면 띄우지 않는다.

◦ callback : 서버에서 결과를 받은 후 처리할 로직을 기술한다. Callback 수행은 UI 쓰레드에서 실행되므로 화면 관련 처리를 수행할 수 있다. 전달되는 결과 값은 long[] 값으로 long[0] 값은 구매후 남은 포인트 값이며 long[1]은 고유한 거래 Id가 담겨있다. long[1] 값이 음수인 경우 포인트 부족 등으로 인하여 구매가 수행되지 못했음을 의미한다.

◦ 적용 예시

@Overridepublic void onClick(View v) {

TnkSession.purchaseItem(MainActivity.this, 30, "item.00001", true, new ServiceCallback() {

@Override public void onReturn(Context context, Object result) {

long[] ret = (long[])result;if (ret[1] < 0) {

// error} else { Log.d("tnkad", "current point = " + ret[0]

+ ", transaction id = " + ret[1]); pointView.setText(String.valueOf(ret[0]));}

} });

TnkAD 서버에서 사용자 포인트를 관리하는 경우 사용자 포인트 전체를 한번에 게시앱으로 인출할 수 있다. 이는 게시앱에서 이미 사용자가 보유하고 있는 포인트와 TnkAD서버에 적립된 포인트를 합치고자 할 때 유용하게 사용할 수 있다.

• TnkSession.withdrawPoints(Context context, String desc)◦ 설명 : TnkAd 서버에서 관리되는 포인트를 모두 한번에 인출한다. 비동기 방식이다. 입력 파라메터는 아래 비동기 방식을 참고한다.

◦ 리턴 : int 인출된 포인트 값.• TnkSession.withdrawPoints(Context context, String desc,

boolean showProgressDialog, ServiceCallback callback)• TnkSession.withdrawPoints(Context context, String desc, String

userName, boolean showProgressDialog, ServiceCallback callback)◦ 설명 : TnkAd 서버에서 관리되는 포인트를 모두 한번에 인출한다.◦ context : Context 객체◦ desc : 인출에 대한 사유 등을 간단히 넣어두면 향후 Tnk 보고서의 아이템 거래 내역에서 확인할 수 있다.

◦ userName : (옵션항목) 게시앱에서 자체적으로 사용자를 식별하는 ID 등이 있

Page 12: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

는 경우 이를 파라메터로 전달해 주면 Tnk 보고서의 아이템 거래내역 화면에서 이를 함께 확인할 수 있다.

◦ showProgress : true 이면 progress dialog를 띄우고 false이면 띄우지 않는다.

◦ callback : 서버에서 결과를 받은 후 처리할 로직을 기술한다. Callback 수행은 UI 쓰레드에서 실행되므로 화면 관련 처리를 수행할 수 있다. 전달되는 결과 값은 Integer 값으로 인출된 포인트 값이며 0인 경우에는 충전된 잔액이 없어 인출할 수 없음을 의미한다.

◦ 적용 예시

@Overridepublic void onClick(View v) {

TnkSession.withdrawPoints(MainActivity.this, "인출", "홍길동", true, new ServiceCallback() {

@Override public void onReturn(Context context, Object result) {

int point = (Integer)result;Log.d("tnkad", "point = " + point);

pointView.setText(String.valueOf(point)); }

});

3.2.5 일괄 설치확인 지급 기능

설치형 광고인 경우 사용자가 앱을 설치하고 다시 광고목록으로 돌아와 명시적으로 설치확인 버튼을 클릭해야 지급이 완료된다. 그러나 이에 대한 이해부족으로 사용자가 설치만 하고 설치확인을 하지 않아 포인트가 지급되는 경우가 있는데, 이를 일괄적으로 처리할 수 있도록 아래의 API를 제공한다. 게시앱에서는 앱이 실행될 때 또는 사용자가 아이템 샵 등으로 이동하였을 때 아래의 API를 호출함으로써 일괄로 설치확인하여 포인트 지급까지 처리할 수 있다.

• TnkSession.requestPayForInstalls(Context context)◦ 설명 : 사용자가 광고앱 설치 후 아직 설치확인하지 않은 것들을 모두 일괄로 설치확인 및 지급 처리한다. 동기방식으로 호출된다.

◦ 리턴 : int[], int[0]는 지급 건수, int[1]은 지급된 포인트의 합계이다.• TnkSession.requestPayForInstalls(Context context, boolean

showProgressDialog, ServiceCallback callback)◦ 설명 : 사용자가 광고앱 설치 후 아직 설치확인하지 않은 것들을 모두 일괄로 설치확인 및 지급 처리한다. 비동기방식으로 호출된다.

◦ context : Context 객체◦ callback으로 전달되는 결과는 int[] 이며 int[0]는 지급 건수, int[1]은 지급된 포인트의 합계이다.

Page 13: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

3.3. Callback URL 구현사용자가 광고를 통하여 획득한 포인트는 TnkAD 서버에서 관리되거나 또는 게시앱이 자체서버에서 관리할 수 있다.

게시앱이 자체 서버에서 포인트를 관리하고자 할 경우에는 게시 정보의 ‘자체관리 URL’ 항목에 URL 주소를 입력하면, TnkAd 서버가 사용자가 획득한 포인트를 해당 URL로 전달한다. URL과 함께 추가적인 정보가 POST 방식으로 전달되며 그 항목 및 의미는 다음과 같다.

전달 항목 상세 내용

uid 사용자를 식별하기 위한 사용자 ID 이다. 안드로이드 폰의 경우 폰의 TelephonyManager.getDeviceId() 값이다. (주1)

pay_pnt 사용자에게 지급되는 포인트 값이다.

seq_id 포인트 지급에 대한 고유한 ID 값이다. 이 값을 사용하여 중복 지급 여부를 확인할 수 있다.

digestURL로 전달된 값이 유효한지 확인하기 위하여 사용된다. 전달되는 값은app_key + uid + seq_id 의 MD5 Hash 값이다. app_key 는 앱 기본 정보 등록시 부여된 app key 값이다.

md_user_nmTnkSession.setUserName()으로 설정한 값이 있다면 설정된 값이 전달된다.게시앱에서 자체적으로 관리하는 사용자 ID 등이 있는 경우 이 항목을 사용하여 사용자를 구별할 수 있다.

주1) Wifi 전용 기기의 경우 DeviceId() 값이 없으므로 이 경우에는 Mac-address를 사용하여 UID를 생성한다. 생성 방식 : wf + Mac-address (예시 : wf3A:00:B3:45:1F:3B )

• 작성 예시 (서버단, Java)// tnk에서 관리하는 사용자 ID (단말기의 deviceID의 소문자)String userId = request.getParameter("uid");// 해당 사용자에게 지급되는 포인트int payPoint = Integer.parseInt(request.getParameter("pay_pnt"));// tnk 내부에서 생성한 고유 번호로 이 거래에 대한 Id이다.String seqId = request.getParameter("seq_id");// 전달된 파라메터가 유효한지 여부를 판단하기 위하여 사용한다. (아래 코딩 참고)String checkCode = request.getParameter("digest");// 게시앱에서 TnkSession.setUserName()으로 설정한 값이 있으면 넘어온다.// 게시앱에서 사용자 구분을 위하여 사용하는 값이 있는 경우(전화번호나 로그인 ID)// 아래의 값을 사용하여 사용자를 구분한다.String mdUserName = request.getParameter("md_user_nm");

// 앱 등록시 부여된 app_key (tnk 사이트에서 확인가능)String appKey = "d2bbd...........19c86c8b021";

// 유효성을 검증하기 위하여 아래와 같이 verifyCode를 생성한다. DigestUtils는 Apache의 // commons-codec.jar 이 필요하다. 다른 md5 해쉬함수가 있다면 그것을 사용해도 무방하다.String verifyCode = DigestUtils.md5Hex(appKey + userId + seqId);

// 생성한 verifyCode와 chk_cd 파라메터 값이 일치하지 않으면 잘못된 요청이다.if (checkCode == null || !checkCode.equals(verifyCode)) { // 오류 log.error("tnkad() check error : " + verifyCode + " != " + checkCode);} else { log.debug("tnkad() : " + userId + ", " + seqId);

// 포인트 부여하는 로직수행 (예시) purchaseManager.getPointByAd(userId, payPoint, seqId);}

3.4. Featured Ads 게시앱 내에 전면 광고를 노출시킬 수 있다. 전면 광고는 Tnk에 등록된 광고앱 중에서 Featured Ads 설정을 한 광고 중에 임의로 선택되어 노출된다.

전면광고는 게시앱 화면위에 팝업 형태로 나타나므로 게시앱의 화면이동 등에 전혀 영향을 주지않는다.

전면광고 화면을 띄우기 위하여 우선 Tnk의 사이트에서 게시정보 우측 상단의 "전면광고 설정"을 통하여 전면광고 사용여부를 "사용"으로 설정하여야한다.

Page 14: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

"전면광고 설정" 팝업내에 있는 In house 설정은 "전면광고"의 경우에만 적용되는 설정이다.

3.4.1 전면광고 준비

게시앱 내에서 전면광고 화면을 띄우기 위하여 전면광고 목록을 가져오는 준비 API와 실제 원하는 시점에 전면광고를 띄우는 API가 제공된다.

전면광고 준비 API는 내부적으로 전면광고 목록을 조회하고 또한 이전에 사용자가 설치하고 아직 설치확인 하지 않은 광고앱의 경우 자동으로 설치확인을 하여 포인트를 적립해주는 작업을 수행한다.

전면광고 준비 API는 일반적으로 앱 실행 시 초기에 한번만 호출하는 것으로 충분하다.

• TnkSession.prepareFeaturedAd(Context context, String title)◦ 설명 : 전면광고 목록등을 내려 받는 사전작업을 수행한다. 내부적으로 별도

Thread가 생성되어 수행된다.◦ context : Context 객체

3.4.1 전면광고 띄우기

다음의 API를 사용하여 전면광고 팝업을 띄운다. 조회된 전면광고 목록이 없거나 Tnk 사이트에서 전면광고 사용설정을 하지 않은 경우에는 아무런 화면도 나타나지 않는다.

• TnkSession.showFeaturedAd(Activity activity)◦ 설명 : 전면광고 화면을 주어진 Activity의 View 위에 팝업으로 띄운다.◦ activity : Activity 객체

작성 예시

Page 15: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

public class MainActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

TnkSession.prepareFeaturedAd(this);

...

final Button featuredButton = (Button)findViewById(R.id.featured_ad); // 버튼을 누르면 Featured Ad 광고 화면을 띄운다. featuredButton.setOnClickListener(new OnClickListener() {

@Overridepublic void onClick(View v) {

TnkSession.showFeaturedAd(MainActivity.this);

} });

}

Page 16: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

3.5. 게시앱 테스트 절차게시앱을 작성한 후 테스트를 위하여 테스트용 광고앱인 TnkAdvertiser 이용한다. TnkAdvertiser 앱은 테스트 상태인 모든 게시앱에 노출이 되며 또한 광고앱의 설치시, 최초 수행시 및 액션 수행시 지급 항목을 모두 제공한다. 또한 한번 지급된 항목에 대하여 반복적인 테스트가 가능하도록 지급 로그를 삭제하는 기능을 제공하므로 보다 원할하게 테스트를 수행할 수 있다 .

테스트 절차는 다음과 같다.

• 우선 테스트할 게시앱의 게시 정보를 등록하고 저장하여 테스트 상태로 만든다.• 게시앱에 SDK를 적용한다.• 게시앱에서 광고 목록(AdWallActivity)를 띄우면 아래와 같이 현재 광고 중인 목록이 나타난다. 그 중에서 TnkAdvertiser 가 테스트용 광고앱이다.

• TnkAdvertiser를 선택하고 다음화면에서 이동하면 앱 다운로드 페이지로 이동한 후 링크

를 클릭하여 apk파일을 다운로드 후 설치한다.• 설치가 완료되면 설치확인을 누르거나 TnkAdvertiser 를 실행시키거나 실행 후 액션 버튼을 눌러 실제 지급이 처리되는지 확인한다.

• 반복적으로 테스트 하기위해서 TnkAdvertiser 앱 화면에서 ‘Delete Test Log’ 버튼을 눌러 지급 로그를 삭제한 후, TnkAdvertiser 앱을 삭제하고 테스트하는 게시앱도 삭제한 후 다시 설치하여 반복적으로 테스트할 수 있다.

• 또는 Tnk 사이트의 개발지원 창에서 테스트 단말기를 동록한 후 지급 로그를 삭제할 수 있다. (게시앱과 TnkAdvertiser도 지우고 다시 설치하도록 한다.)

Page 17: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

4.광고 앱(Advertiser App)

4.1. 광고 정보 등록앱을 광고하기 위하여 우선 TnkAd 웹페이지에 광고 정보를 설정한다. 광고 정보를 설정하기 전에 우선 앱의 기본 정보가 등록되어 있어야 한다.

앱 리스트에서 앱을 선택한 후 광고 정보 탭을 선택한다. 광고 정보 탭화면에서 다시 광고 등록 버튼을 누른다.

입력 항목은 다음과 같다.

• In House : 만약 다른 게시앱들을 가지고 있고 자신의 게시앱에만 노출시키기를 원한다면 In House를 체크한다.

• 노출 해상도 : 광고 노출하고자 하는 단말기의 해상도를 선택한다. 해상도가 480x854인 단말기는 480을 선택하면 같이 노출된다.

• 노출 단말기 : 광고를 노출하고자 하는 단말기를 선택할 수 있다. 특정 단말기 모델을 대상으로만 광고를 노출하고자 하는 경우에는 전체를 선택해제하고 ‘추가’ 버튼을 눌러서 단말기 모델을 개별로 설정할 수 있다.

• 노출 카테고리 : 광고를 노출하고자 하는 앱의 카테고리를 지정할 수 있다. 예를 들어 ‘게임’ 카테고리의 앱에만 광고를 노출하고자 하는 경우 전체를 선택해제하고 ‘추가’ 버튼을 눌러서 ‘게임’ 카테고리를 선택한다.

• 지급방법 : 광고비가 집행되는 조건을 설정한다. 지급 조건은 ‘설치시’, ‘실행시’, ‘액션시’ 3가지를 선택할 수 있다. (중복 설정 가능)

◦ 설치시 : 단순히 자신의 앱이 설치된 경우에 광고비를 집행한다. 단순 설치에 따른 비용 지급이므로 이 경우 광고앱에 TnkAd의 SDK를 탑재할 필요는 없다.

◦ 실행시 : 자신의 앱이 설치된 후 처음 실행되는 경우에 광고비를 집행한다. 광고앱에 TnkAd의 SDK를 탑재하여야 한다.

◦ 액션시 : 사용자가 지정한 액션을 완료한 경우에 광고비를 집행한다. 예를 들어 사용자가 앱을 설치하여 실행한 후 레벨 1을 clear 한 경우에 비용을 지급하고 자할 경우 액션 설명으로 ‘레벨 1 clear 시’ 라고 입력한다. 광고앱에 TnkAd의 SDK를 탑재하여야 한다.

• 연결 마켓 : 광고앱을 다운 받을 수 있는 정보를 설정한다. 안드로이드 마켓과 티스토어, 자체 URL이 가능하며 중복 설정이 가능하다. 중복 설정 시 우선 순위는 자체URL > 티스토어 > 안드로이드 마켓이다. 티스토어만 지정한 경우 티스토어가 탑재되지 않은 단말기에는 노출이되지 않는다.

◦ 안드로이드 : 사용자가 안드로이드 마켓으로 이동되어 광고앱을 설치하도록 한다. 패키지 값은 기본정보에서 입력한 내용으로 설정된다.

Page 18: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

◦ 티스토어 : 사용자가 티스토어로 이동되어 광고앱을 설치하도록 한다. 티스토어 Id는 상품PID/상품등급 형태로 입력한다. 상품PID는 티스토어에 등록된 Id를 사용하며 10자리 문자열이다. 상품등급은 티스토어에 등록된 상품등급으로 0 : 전체이용가, 1 : 12세이용가, 2 : 15세이용가, 4 : 청소년사용불가 이다.

▪ 주의 : 티스토어의 상품ID는 안드로이드 어플인 경우 OA~로 시작되는데 이때 OA → 00으로 변경하여 입력하도록한다.

▪ 입력 예시 : 0000017949/0

◦ 자체 URL : 안드로이드 마켓이나 티스토어가 아닌 자체적인 모바일 웹페이지를 통하여 설치 유도를 하고자 할 경우 URL 을 직접 지정한다.

위의 항목들을 입력하고 저장 버튼을 클릭하면 입력 항목들이 저장되고 광고 상태가 ‘테스트’로 변경된다. 테스트 상태는 정상적인 광고 상태와 다음의 사항들이 다르게 동작한다.

• 테스트 상태의 광고앱은 정상 게시 상태의 앱에는 노출이 되지 않으나, 테스트 상태의 게시 앱에는 노출이 된다.

• 테스트 상태에서도 모든 동작은 정상 게시 상태와 동일하게 동작하며 따라서 사용자가 광고앱을 통하여 정상적인 포인트를 지급받을 수 있다.

• 다만 테스트 상태에서는 실제로 비용이 정산되어 지급되지 않는다.

테스트 완료 후 승인 신청을 하기 전에 광고앱은 연결마켓을 통하여 설치가 가능하도록 마켓이나 티스토어에 배포되어 있어야한다. (또는 APK 파일을 메일등으로 전달). 승인 신청을 하면 테스트 담당자가 설정된 연결 마켓을 통하여 해당 앱을 내려받아 기능 확인 후 승인 처리를 한다. (3일 이내). 승인이 완료되면 ‘광고 게시’를 버튼을 눌러서 광고 판매를 진행한다.

광고 정보의 내용 중 지급 방법과 연결마켓을 변경하고자 할 경우에는 광고 중지 후 수정할 수 있으며, 수정 후에는 다시 승인 신청을 하여 검증 과정을 거쳐야 한다.

4.2. 광고앱 구현하기광고앱 중 단순 설치형 광고만을 진행하고자 할 경우에는 TnkAd의 SDK를 적용할 필요가 없으며 설치 실행형, 액션 수행형 광고를 진행하고자 할 경우에만 TnkAd의 SDK를 적용한다.

4.2.1 설치 실행형 광고앱

설치 실행형 광고는 사용자가 앱을 설치 후 최초 실행시에 광고비를 집행하는 방식을 의미한다. 이를 위하여 광고 앱에서는 앱이 처음 실행되는 시점에 아래의 함수를 호출한다.

Page 19: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

• TnkSession.applicationStarted(Context context)◦ 설명 : 필요시 TnkAd 서버로 설치 실행형 지급을 요청한다.◦ TnkAd 서버에서는 광고앱을 설치 클릭한 게시앱을 확인하여 해당 광고비 지급을 처리한다.

◦ 광고비 지급이 집행된 후에는 반복적으로 호출해도 중복지급되지 않는다.◦ context : Context 객체이다.◦ 적용 예시

@Overridepublic void onCreate(Bundle savedInstanceState) {

// ... omitted ...

TnkSession.applicationStarted(this);

}

4.2.2 액션 수행형 광고앱

액션 수행형 광고는 사용자가 지정한 액션을 수행한 경우에 광고비를 집행하는 방식을 의미한다 . 이를 위하여 광고 앱에서는 해당 액션이 수행되는 시점에 아래의 함수를 호출한다.

• TnkSession.actionCompleted(Context context)◦ 설명 : 필요시 TnkAd 서버로 액션 수행형 지급을 요청한다.◦ TnkAd 서버에서는 광고앱을 설치 클릭한 게시앱을 확인하여 해당 광고비 지급을 처리한다.

◦ 광고비 지급이 집행된 후에는 반복적으로 호출해도 중복지급되지 않는다.◦ context : Context 객체이다.◦ 적용 예시

public void whenYourActionIsCompleted() {

// ... omitted ...

TnkSession.actionCompleted(this);

}

5.기타 기능 5.1. 로깅 설정

테스트 시 TnkAd SDK의 로그 내용을 확인하고자 할 경우에는 아래의 API를 사용하여 로깅 설정을 변경한다. 테스트 완료 후 배포 시에는 로깅을 false로 설정하거나 API를 주석처리하여 필요없는 로깅이 생성되지 않도록 한다.

• TnkSession.enableLogging(boolean logging) 5.2. AdWall 스타일 설정

게시앱에서 AdWall을 띄우는 화면은 기본적인 스타일이 설정되어 있으나 원하는 경우 화면의 스타일을 모두 변경할 수 있다.

설정할 수 있는 스타일 항목은 다음과 같다.

• background : 배경이미지 (Drawable의 resource ID)• backgroundColor : 배경색상 (background도 지정된 경우 background 가 우선 적용됨)

• textColor : 글자 색상• textSize : 글자 폰트 크기

설정할 수 있는 화면의 구성요소는 다음과 같다.

• TnkStyle.AdWall : 광고 목록 화면 전체

Page 20: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

• TnkStyle.AdWall.Header : 광고 목록 상단의 타이틀 영역• TnkStyle.AdWall.Section : 타이틀 하단의 광고 설치 안내 부분• TnkStyle.AdWall.Item : 광고 목록 리스트의 각 항목들• TnkStyle.AdWall.Item.Title : 광고 목록 리스트의 앱 이름• TnkStyle.AdWall.Item.Subtitle : 광고 목록 리스트의 앱이름 하단의 지급 포인트 설명문

Page 21: TnkAd SDK Integration Guide for Android - TNK FACTORY · TnkOfferer SDK를 사용하여 구현한 데모용 샘플 광고 게시용 어플리케이션이다. TnkAdvertiser SDK를

• TnkStyle.AdWall.Item.Tag : 광고 목록 리스트의 무료,유료,웹,설치확인 등의 아이콘

• TnkStyle.AdWall.Item.Tag.Free : 무료 표시 아이콘• TnkStyle.AdWall.Item.Tag.Paid : 유료 표시 아이콘• TnkStyle.AdWall.Item.Tag.Web : 웹 표시 아이콘• TnkStyle.AdWall.Item.Tag.Confirm : 설치확인 표시 아이콘• TnkStyle.AdWall.Dialog : 상세 표시 다이얼로그 화면 전체• TnkStyle.AdWall.Dialog.Header : 상세 표시 다이얼로그 화면의 상단 부분• TnkStyle.AdWall.Dialog.Body : 상세표시 다이얼로그의 본문 영역 부분• TnkStyle.AdWall.Dialog.Button : 상세표시 다이얼로그의 하단 버튼 부분• TnkStyle.AdWall.Dialog.Highlight : 상세표시 다이얼로그의 강조글씨• TnkStyle.AdWall.Dialog.Detail : 상세표시 다이얼로그의 일반 글씨

적용 예제

private void setTnkStyle() { TnkStyle.AdWall.background = R.drawable.bg;

TnkStyle.AdWall.Header.background = R.drawable.free_cookie_01_480;TnkStyle.AdWall.Item.background = R.drawable.list_item_bg;TnkStyle.AdWall.Item.Subtitle.textColor = 0xff2c2c7c;

}

... 광고목록 띄우는 부분 ...

setTnkStyle(); // showAdList 전에 호출한다.TnkSession.showAdList(MainActivity.this);


Recommended