1) Android
전면 광고 적용을 위해서는 Tnk 사이트에서 앱 등록 및 Android 프로젝트 상의 SDK 관련 설정이 우선 선행되어야합니다.
[Android Settings] 의 내용을 우선 확인해주세요.
동영상 광고는 동영상 광고를 로딩하는 과정과 로딩이 완료되면 이를 화면에 플레이하는 단계로 구성되어 있으며, 동영상 광고 로딩을 위해서는 TnkSession.prepareVideoAd()를 호출하고 로딩된 동영상을 플레이하기 위해서는 TnkSession.showVideoAd()를 호출합니다.
기본적으로는 1개의 동영상 광고만 로딩하기때문에 동영상광고를 플레이한 후 다음 동영상을 가져오기 위해서는 다시 prepareVideoAd()를 호출해야하지만, 마지막 파라메터인 repeat 파라메터를 true로 설정하면 내부적으로 별도 Task가 수행되면서 다음 동영상을 자동적으로 로딩시킬수 있습니다.
[Loading a Video Ad]
우선 앱이 실행되면 아래의 초기화 함수를 호출해야합니다.
Initialize
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialized Tnkad Instance
TnkSession.initInstance(this);
}
아래의 함수를 호출하여 동영상 광고를 로딩합니다. 아래의 예에서 두번째 파라메터는 Display Logic 명이며 세번째 파라메터는 동영상 광고 로딩이 완료되면 그 이벤트를 받기 위하여 사용하는 Linstener 객체입니다. 네번째 파라메터는 repeat 옵션으로 false로 지정할 경우 한건의 동영상만 로딩합니다. true로 지정하면 자동적으로 동영상을 로딩합니다.
Prepare a Video Ad
TnkSession.prepareVideoAd(this, "your_display_logic", new VideoAdListener() {
// omit...
}, true);
[VideoAdListener]
동영상 광고의 로딩이 완료되거나 사용자가 동영상 광고 시청을 완료한 경우 해당 이벤트 발생시점에 필요한 로직을 구현하기 위해서 아래의 VideoAdListener 인터페이스를 이용할 수 있습니다.
VideoAdListener Interface
public interface VideoAdListener {
// 사용자가 닫기버튼이나 Back key를 눌러서 광고화면을 닫은 경우
public static final int CLOSE_SIMPLE = 0;
// 사용자가 동영상 광고 시청 후 광고를 클릭해서 화면이 닫히는 경우
public static final int CLOSE_CLICK = 1;
public static final int FAIL_NO_AD = -1; // no ad available available
public static final int FAIL_CANCELED = -4; // ad frequency settings
public static final int FAIL_NOT_PREPARED = -5; // prepare not invoked.
public static final int FAIL_SYSTEM = -9;
/**
* 동영상 시청 화면이 닫힐 때 호출됩니다.
* 화면이 닫히는 이유를 파라메터로 전달해 줍니다.
* @param type
*/
public void onClose(int type);
/**
* 동영상 시청 화면이 나타나는 시점에 호출됩니다.
*/
public void onShow();
/**
* 동영상 광고를 로딩하지 못하였을 경우 호출됩니다.
* 만약 prepareVideoAd() 호출시 repeat 파라메터를 true로 지정하였다면 이 이벤트는 발생하지 않습니다.
*/
public void onFailure(int errCode);
/**
* 동영상 광고가 로딩완료되면 호출됩니다.
*/
public void onLoad();
/**
* 동영상 시청이 완료되는 시점에 호출됩니다.
* 중간에 skip 가능한 동영상 광고의 경우 사용자가 skip하였다면
* skipped 파라미터는 true로 전달됩니다.
*/
public void onVideoCompleted(boolean skipped);
}
[Video Ad Sample]
아래의 예시는 Listener를 사용하여 동영상 광고가 로딩되는 시점에 동영상 시청 버튼을 보여주고 사용자가 이를 클릭하면 동영상을 플레이해주는 예시입니다. Listener 를 호출하는 Thread는 UI Thread 가 아니기 때문에 화면의 버튼을 보여주기 위하여 Handler 를 사용하여 구현하였습니다.
Video Ad Sample
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialized Tnkad Instance
TnkSession.initInstance(this);
TnkSession.setUserName(this, "user identification string");
videoButton = (Button)findViewById(R.id.video_button);
videoButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
videoButton.setVisibility(View.GONE);
TnkSession.showVideoAd(MainActivity.this, "intro_video");
}
});
if (TnkSession.hasVideoAd(this, "intro_video")) {
videoButton.setVisibility(View.VISIBLE);
}
else {
videoButton.setVisibility(View.GONE);
requestVideoAd();
}
}
private Handler handler = new Handler();
private Runnable videoButtonShowRunnable = new Runnable() {
@Override
public void run() {
if (TnkSession.hasVideoAd(MainActivity.this, "intro_video")) {
videoButton.setVisibility(View.VISIBLE);
}
}
};
private void requestVideoAd() {
TnkSession.prepareVideoAd(this, "intro_video", new VideoAdListener() {
@Override
public void onClose(int type) {
Logger.d("video onClose : " + type);
}
@Override
public void onShow() {
Logger.d("video onShow");
}
@Override
public void onFailure(int errCode) {
// onFailure() never invoked when repeat parameter is true.
Logger.d("video onFailure");
}
@Override
public void onLoad() {
Logger.d("video onLoad");
handler.post(videoButtonShowRunnable);
}
@Override
public void onVideoCompleted(boolean skipped) {
Logger.d("video onVideoCompleted");
}
},
true); // set repeat paramter to true
}
[Video Ad APIs]
- TnkSession.prepareVideoAd()
Method
- void TnkSession.prepareVideoAd(Activity activity, VideoAdListener listener, boolean repeat)
- void TnkSession.prepareVideoAd(Activity activity, String displayLogic, VideoAdListener listener, boolean repeat)
Description
하나의 동영상 광고를 로딩합니다. 로딩된 동영상 광고는 이후 showVideoAd() API를 호출하여 플레이할 수 있습니다.
Parameters
- TnkSession.showVideoAd()
Method
- void TnkSession.showVideoAd(Activity activity)
- void TnkSession.showVideoAd(Activity activity, String displayLogic)
Description
prepareVideoAd()를 통하여 로딩된 동영상 광고를 플레이합니다.
Parameters
파라메터 명칭
activity
displayLogic
내용
현재 Activity 객체
displayLogic 명을 지정할 경우 이전에 prepare() 호출시 지정한 displayLogic과 일치하는 동영상 광고를 플레이합니다. 지정하지 않으면 먼저 로딩된 동영상 광고를 플레이합니다.
- TnkSession.hasVideoAd()
Method
- boolean TnkSession.hasVideoAd(Context context)
- boolean TnkSession.hasVideoAd(Context context, String displayLogic)
Description
현재 로딩된 동영상광고가 존재하는지 여부를 반환합니다.
Parameters
파라메터 명칭
context
displayLogic
내용
Context 객체
displayLogic 명을 지정할 경우 해당명으로 로딩된 동영상광고의 존재여부를 반환합니다.
지정하지 않으면 displayLogic과 상관없이 동영상 로딩여부를 반환합니다.
[기타]
1) 동영상 화면을 세로로 설정하고 싶으신 경우
AndroidMenifest.xml 파일에 AdMediaActivity 의 screenOrientation = "portrait" 로 설정합니다.
<activity android:name="com.tnkfactory.ad.AdMediaActivity" android:screenOrientation="portrait"/>
2) 동영상 화면에서 닫기 버튼(X 버튼)을 숨기고 Back Key 를 동작하지 않도록 하고 싶으신 경우
아래의 코드를 삽입합니다.
TnkStyle.AdVideo.noClose = true;