3) Unity
전면 광고 적용을 위해서는 Tnk 사이트에서 앱 등록 Unity Plugin 관련 설정이 우선 선행되어야합니다.
[1. TnkAd SDK] 의 내용을 우선 확인해주세요.
[Incentive Interstitial Ad]
보상형 전면 광고를 띄우는 것은 아래와 같이 간단히 2줄의 코딩만으로 가능합니다.
Incentive Ad Sample
using UnityEngine;
using System.Collections;
public class TnkUITest : MonoBehaviour {
void Start ()
{
}
void Update ()
{
}
void OnGUI ()
{
if (GUI.Button (new Rect (100, 100, 150, 80), "Interstitial Ad")) {
Debug.Log("interstitial Ad");
TnkAd.Plugin.Instance.prepareInterstitialAdForPPI();
TnkAd.Plugin.Instance.showInterstitialAd();
}
}
}
[Non-Incentive Intestitial Ad]
비보상형 전면 광고를 띄우는 것은 아래와 같이 2줄의 코딩만으로 가능합니다.
Non-Incentive Ad Sample
using UnityEngine;
using System.Collections;
public class TnkUITest : MonoBehaviour {
void Start ()
{
}
void Update ()
{
}
void OnGUI ()
{
if (GUI.Button (new Rect (100, 100, 150, 80), "Interstitial Ad")) {
Debug.Log("interstitial Ad");
TnkAd.Plugin.Instance.prepareInterstitialAdForCPC();
TnkAd.Plugin.Instance.showInterstitialAd();
}
}
}
[Cross Interstitial Ad]
타사와 크로스 광고를 진행하기 위해서는 Display Logic 기능을 이용하시면 됩니다.
아래와 같이 prepareInterstitialAd() 호출시 임의의 문자열을 지정하시고 해당 문자열에 대한 로직을 Tnk 사이트에서 크로스 광고로 설정하시어 이용하실 수 있습니다.
Display Logic을 사용하시면 이후 앱 업데이트하지 않아도 Tnk 서버에서 간단하게 보상형, 비보상형, 인하우스, 크로스 광고 등 원하는 형태로 설정하실 수 있습니다.
자세한 내용은 5) Display Logic 을 참고해주세요.
Cross Interstitial Ad with DisplayLogic Sample
TnkAd.Plugin.Instance.prepareInterstitial("your_logic_name");
TnkAd.Plugin.Instance.showInterstitialAd();
[Interstitial Ad APIs]
전면 광고를 띄우기 위해서 사용하는 prepareInterstitialAd() 와 showInterstitialAd() 의 API 규약은 아래와 같습니다.
- TnkAd.Plugin - prepareInterstitialAd()
Method
- void prepareInterstitialAd(string logicName)
- void prepareInterstitialAd(string logicName, string handlerName)
Description
하나의 전면광고를 로딩합니다. 로딩된 전면광고는 이후 showInterstitialAd() API를 호출하여 화면에 띄울수 있습니다. EventHandler의 이름을 지정하면 전면광고관련 이벤트 발생시점에 EventHandler 객체의 메소드들이 호출됩니다.
Parameters
파라메터 명칭
logicName
handlerName
내용
Tnk 사이트에서 Display 로직을 등록하고 해당 로직의 이름을 지정합니다. 이후 Tnk 사이트에서 원하는 형태의 광고를 띄우도록 제어할 수 있습니다. ( [Display Logic] 참고)
EventHandler 객체의 이름
- TnkAd.Plugin - showInterstitialAd()
Method
- void showInterstitialAd()
Description
prepareInterstitialAd()를 통하여 로딩된 전면광고를 화면에 띄웁니다.
[EventHandler 이용하기]
전면광고의 로딩이 완료되거나 사용자가 전면광고 화면을 닫는 경우 해당 이벤트 발생시점에 필요한 로직을 구현하기 위해서는 EventHandler 객체를 생성해야합니다.
EventHandler 클래스는 포인트 조회나 포인트 인출과 같이 비동기로 결과를 받아야 하는 경우 또는 중간 전면광고에서 발생하는 이벤트를 처리하기 위해서 제공되는 클래스입니다.
EventHandler 에 대한 자세한 내용은 [EventHandler] 를 참고하세요.
전면 광고와 관련되어 EventHandler에서 발생하는 이벤트들은 아래와 같습니다.
onClose(int type) : 전면 화면이 닫히는 시점에 호출됩니다. 화면이 닫히는 이유가 type 파라메터로 전달됩니다.
CLOSE_SIMPLE (0) : 사용자가 전면 화면의 닫기 버튼이나 Back 키를 눌러서 닫은 경우입니다.
CLOSE_CLICK (1) : 사용자가 전면 화면의 광고를 클릭하여 해당 광고로 이동하는 경우 입니다.
CLOSE_EXIT (2) : 전면 화면에 앱 종료버튼이 있는 경우 사용자가 앱 종료 버튼을 누른 경우입니다. 이 경우 앱을 종료하는 로직을 EventHandler에 구현해야합니다.
onFailure(int errCode) : 전면 광고를 가져오지 못한 경우 호출이 됩니다. 에러 코드가 errCode 파라메터로 전달됩니다.
FAIL_NO_AD (-1) : 제공할 전면광고가 없을 경우입니다.
FAIL_NO_IMAGE (-2) : 전면 광고를 가져왔으나 전면 이미지 정보가 없는 경우입니다.
FAIL_TIIMEOUT (-3) : showInterstitialAd() 호출 후 5초 이내에 전면광고가 도착하지 않은 경우입니다. 이 경우에는 전면광고를 띄우지 않습니다.
FAIL_CANCELED (-4) : prepareInterstitialAd() 호출하였으나 서버에서 설정한 광고 노출 주기를 지나지 않아 취소된 경우입니다.
FAIL_NOT_PREPARED (-5) : prepareInterstitialAd()를 호출하지 않고 showInterstitialAd()를 호출한 경우입니다.
FAIL_SYSTEM (-9) : 서버 또는 네트워크 오류가 발생한 경우입니다.
onLoad() : prepareInsterstitialAd() 호출하여 전면광고를 성공적으로 가져온 경우 호출됩니다. 만약 전면광고가 도착하기 전에 showInterstitialAd() 가 호출되었다면 이후 전면광고 도착시 onLoad() 가 호출되지 않고 바로 전면광고가 보여지면서 onShow()가 호출됩니다.
onShow() : 전면광고가 화면에 나타날 때 호출됩니다.
[Sample #1]
아래의 예시는 EventHandler를 사용하여 광고가 로딩되는 시점에 앱의 상태를 판단하여 광고를 띄울지 말지 결정하는 방식의 구현 예시입니다.
EventHandler Sample
using UnityEngine;
using System.Collections;
public class MyTnkHandler : TnkAd.EventHandler {
public bool isOkToShow = true;
public override void onClose (int type) {
Debug.Log ("##### TnkAd.Listener onClose " + type.ToString ());
}
public override void onFailure(int errCode) {
Debug.Log ("##### TnkAd.Listener onFailure " + errCode.ToString ());
}
public override void onLoad() {
Debug.Log ("##### TnkAd.Listener onLoad ");
if (isOkToShow) {
TnkAd.Plugin.Instance.showInterstitialAd ();
} else {
// not showing
}
}
public override void onShow() {
Debug.Log ("##### TnkAd.Listener onShow ");
}
}
Interstitial Ad with EventHandler
using UnityEngine;
using System.Collections;
public class TnkUITest : MonoBehaviour {
void Start ()
{
}
void Update ()
{
}
void OnGUI ()
{
if (GUI.Button (new Rect (100, 200, 150, 80), "Ad Listener")) {
Debug.Log("interstitial Ad for Listener");
// be sure that put handler object named 'testhandler' in your scene. (It should be named in Unity Inspector)
TnkAd.Plugin.Instance.prepareInterstitialAd("notice_start", "testhandler");
}
}
}
[Sample #2]
아래의 예시는 앱 종료시점에 앱 종료 여부를 확인하고 사용자가 '종료' 버튼을 누르면 전면광고를 노출시키는 방식을 구현한 예시입니다.
EventHandler Sample #2
public class YourDialogBox : MonoBehaviour {
// DialogBox의 종료 버튼을 누르면 전면광고를 띄운다.
void OnExitButtonPressed ()
{
TnkAd.Plugin.Instance.prepareInterstitialAd("on_app_exit", "testhandler");
}
}
public class MyTnkHandler : TnkAd.EventHandler {
public override void onClose (int type) {
Application.Quit(); // 광고 화면이 닫히면 앱 종료
}
public override void onFailure(int errCode) {
Debug.Log ("##### TnkAd.Listener onFailure " + errCode.ToString ());
Application.Quit(); // 광고 로딩 실패시에도 앱을 종료한다.
}
public override void onLoad() {
TnkAd.Plugin.Instance.showInterstitialAd ();
}
public override void onShow() {
Debug.Log ("##### TnkAd.Listener onShow ");
}
}
[Sample #3 - 종료시 2-버튼 전면화면]
2 버튼 전면화면을 사용하여 앱 종료시 사용자가 '종료' 버튼을 누르면 앱이 종료되도록 구현하는 예시입니다. 이 경우 back-key는 동작하지 않습니다.
2 버튼 전면 프레임은 전면 프레임에 2개의 버튼이 제공되는 특수한 형태의 프레임이며 Tnk의 사이트의 전면광고 로직 설정화면에서 프레임을 '2 Button' 설정해야합니다.
EventHandler Sample #2
public class YourDialogBox : MonoBehaviour {
// DialogBox의 종료 버튼을 누르면 전면광고를 띄운다.
void OnExitButtonPressed ()
{
TnkAd.Plugin.Instance.prepareInterstitialAd("on_app_exit", "testhandler");
}
}
public class MyTnkHandler : TnkAd.EventHandler {
public override void onClose (int type) {
Debug.Log ("##### TnkAd.Listener onClose " + type.ToString ());
if (type == CLOSE_EXIT) {
Application.Quit(); // 종료버튼을 누르면 앱을 종료한다.
}
}
public override void onFailure(int errCode) {
Debug.Log ("##### TnkAd.Listener onFailure " + errCode.ToString ());
Application.Quit(); // 광고 로딩 실패시에는 앱을 바로 종료한다.
}
public override void onLoad() {
// 광고 로딩이 완료되면 전면화면을 띄운다.
TnkAd.Plugin.Instance.showInterstitialAd ("on_app_exit");
}
public override void onShow() {
Debug.Log ("##### TnkAd.Listener onShow ");
}
}