로딩중입니다
애드팝콘 DA : 유니티 안드로이드
5/11/2017 7:19:50 PM

애드팝콘 DA연동하기 : 유니티 안드로이드

본 가이드는 유니티 안드로이드 프로젝트에서 애드팝콘 DA를 연동하기 위한 문서입니다.

애드팝콘에 대한 서비스 소개나 이용방법 안내는 아래 아티클에서 확인하실 수 있습니다.

[애드팝콘 서비스 안내]


서비스 이용 중 도움이 필요한 경우에는 아래 메일 주소로 연락 부탁 드립니다.

1. 서비스 이용 및 제휴 문의 - 애드팝콘 사업팀 (media@igaworks.com)

2. 기술문의 : 기술지원팀(tech_support@igaworks.com)



SDK 다운로드 및 설치


[SDK 다운로드 센터] 에서 최신 유니티 안드로이드 플러그인 패키지를 다운로드 합니다.

다운로드 받은 .zip 파일을 압축해제하여 IgawDisplayAdUnityPlugin_aos_ver~*.unitypackage 파일을 유니티 프로젝트로 드래그하여 설치합니다.





매니페스트 설정


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


앱키 & 해시키 추가

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

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




코드연동

SDK 초기화

어플리케이션 실행 후 유니티 엔진이 구동 될 때, initPlugin, startSession, endSession api를 호출하여 SDK를 초기화합니다.
using IgaworksUnityAOS;

public class MySampleScene : MonoBehavior {

    void Awake() {        
        IgaworksUnityPluginAOS.InitPlugin ();
    }

    void Start()
    {
        #if UNITY_5_3_OR_NEWER
            Debug.Log("Current Unity version is UNITY_5_3_OR_NEWER");
        #else            
            IgaworksUnityPluginAOS.Common.startSession();
        #endif
    }

    void OnApplicationPause(bool pauseStatus){
        
        if (pauseStatus) {
        Debug.Log ("go to Background");
        IgaworksUnityPluginAOS.Common.endSession();
    } else {
        Debug.Log ("go to Foreground");
        IgaworksUnityPluginAOS.Common.startSession();
    }

}

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

void Start (){
	Debug.Log ("Start");
	IgawDisplayAdPlugin.init();
} 


리소스 해제

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

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

void OnDestroy(){
	Debug.Log ("OnDestroy");
	IgawDisplayAdPlugin.destroy();
}

+ 델리게이트를 사용하기 위해 등록을 했을 경우 OnDestory()에서 등록된 델리게이트의 해제 작업을 진행해야 합니다.


화면방향 고정해제

setSensorLandscapeEnable API를 이용하여 전면, 엔딩, 팝업 광고의 방향 고정을 설정 또는 해제할 수 있습니다.

고정을 해제할 때에는 디바이스의 방향에 따라서 광고가 회전됩니다.

// 화면방향 고정을 해제합니다. false로 설정하면 다시 고정됩니다. (기본값)
IgawDisplayAdPlugin.setSensorLandscaple(true);




배너 광고

배너는 DA의 가장 일반적인 광고 형태로 앱의 하단이나 상단에 노출되는 띠 형태의 광고입니다.


인스턴스 생성

배너 광고 노출을 위한 인스턴스를 생성합니다.

public class IgawDASampleScene : MonoBehaviour{

	private string BANNER_SPOTKEY = "bannerspotkey";
	private Banner bannerAd = null;

	void Start(){   
		bannerAd = new Banner(BANNER_SPOTKEY, Banner.GRAVITY_BOTTOM); 
	}
}

+ 배너광고스팟키 : 애드팝콘 DA 관리페이지에서 생성한 spotkey 


광고 제어

배너 광고를 제어하고자 하는 시점에 필요한 API를 호출하여 광고를 제어합니다. 

//배너 광고 노출
void SomeAction(){
	if(bannerAd != null)   
	bannerAd.startBannerAd();
}

//배너 광고 중지
void SomeAction(){
	if(bannerAd != null)  
	bannerAd.pauseBannerAd();
}

//배너 광고 종료
void SomeAction(){
	if(bannerAd != null) 
	bannerAd.stopBannerAd();
}

+어플리케이션이 pause 되거나 restart 될 때 광고도 pause/start 될 수 있도록 처리해야 합니다. 유니티에서 제공하는 onApplicationPause(bool pauseStatue) 함수를 이용하여 처리합니다.


델리게이트

배너 광고 로드의 성공/실패에 대한 델리게이트를 제공합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

//배너 델리게이트 등록
void SomeAction(){
	if(bannerAd != null)
		bannerAd.OnBannerAdReceiveSuccess += OnBannerAdReceiveSuccess;
		bannerAd.OnBannerAdReceiveFailed += OnBannerAdReceiveFailed;
}

//배너 델리게이트 구현
public void OnBannerAdReceiveSuccess(object sender, System.EventArgs args){
	Debug.Log("OnBannerAdReceiveSuccess event received.");
}
public void OnBannerAdReceiveFailed(object sender, ErrorResult errorResult){
	Debug.Log("OnBannerAdReceiveFailed event received. > errorCode : " +
	errorResult.errorCode + ", errorMessage : " + errorResult.errorMessage);
}

//배너 델리게이트 해제
void OnDestroy(){
	if (bannerAd != null) {
		bannerAd.OnBannerAdReceiveSuccess -= OnBannerAdReceiveSuccess;
		bannerAd.OnBannerAdReceiveFailed -= OnBannerAdReceiveFailed;
		bannerAd.stopBannerAd ();
	}
	IgawDisplayAdPlugin.destroy ();
}




전면 광고

전면광고는 화면 전체를 덮는 형태의 광고입니다. 다음을 참고하여 전면광고를 연동합니다.


인스턴스 생성

전면 광고 노출을 위한 인스턴스를 생성합니다.

public class IgawDASampleScene : MonoBehaviour{
	private string INTERSTITIAL_SPOTKEY = "interstitialspotkey";
	private Interstitial interstitialAd = null;
	
	void Start(){
		interstitialAd = new Interstitial(INTERSTITIAL_SPOTKEY);
	}
}

+ 전면광고스팟키 : 애드팝콘 DA 관리페이지에서 생성한 spotkey 


광고 제어

전면 광고를 제어하고자 하는 시점에 API를 호출하여 광고를 제어합니다. 

//전면 광고 노출
void SomeAction(){
	if(interstitialAd != null)
	interstitialAd.showInterstitialAd();
}


델리게이트

전면 광고 로드의 성공/실패/창 종료에 대한 델리게이트를 제공합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

    • OnInterstitialReceiveSuccess : 전면광고 로딩 성공
    • OnInterstitialReceiveFailed : 전면광고 로딩 실패 (전달되는 에러코드는 [APPENDIX : DA 응답 에러 코드 정의]를 참고)
    • OnInterstitialClosed : 전면광고 창 종료
//전면 델리게이트 등록
void SomeAction(){
	if(interstitialAd != null)
		interstitialAd.OnInterstitialReceiveSuccess += OnInterstitialReceiveSuccess;
		interstitialAd.OnInterstitialReceiveFailed += OnInterstitialReceiveFailed;
		interstitialAd.OnInterstitialClosed += OnInterstitialClosed;
}

//전면 델리게이트 구현
public void OnInterstitialReceiveSuccess(object sender, System.EventArgs args){
	Debug.Log("OnInterstitialReceiveSuccess event received.");
}
public void OnInterstitialReceiveFailed(object sender, ErrorResult errorResult){
	Debug.Log("OnInterstitialReceiveFailed event received. > errorCode : " +
	errorResult.errorCode + ", errorMessage : " + errorResult.errorMessage);
}
public void OnInterstitialClosed(object sender, System.EventArgs args){
	Debug.Log("OnInterstitialClosed event received.");
}

//전면 델리게이트 해제
void OnDestroy(){
	if (interstitialAd != null) {
		interstitialAd.OnInterstitialReceiveSuccess -= OnInterstitialReceiveSuccess;
		interstitialAd.OnInterstitialReceiveFailed -= OnInterstitialReceiveFailed;
		interstitialAd.OnInterstitialClosed -= OnInterstitialClosed;
	}
	IgawDisplayAdPlugin.destroy ();
}




팝업 광고

광고가 전체 화면을 덮지 않고 여백을 통해 뒷 배경이 보이는 광고 형태입니다.


인스턴스 생성

팝업광고 노출을 위한 인스턴스를 생성합니다.

public class IgawDASampleScene : MonoBehaviour{
	private string POPUP_SPOTKEY = "popupspotkey";
	private PopupAd popupAd = null;
	
	void Start(){
		popupAd = new PopupAd(POPUP_SPOTKEY);
	}
}

+ 팝업광고스팟키 : 애드팝콘 DA 관리페이지에서 생성한 spotkey 


광고 제어

팝업 광고를 제어하고자 하는 시점에 API를 호출하여 광고를 제어합니다. 

//팝업 광고 노출
void SomeAction(){
	if(popupAd != null)
	popupAd.showPopupAd();
}


델리게이트

팝업광고 로드의 성공/실패/창 종료에 대한 델리게이트를 제공합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

    • OnPopupAdReceiveSuccess : 팝업광고 로딩 성공
    • OnPopupAdReceiveFailed : 팝업광고 로딩 실패 (전달되는 에러코드는 [APPENDIX : DA 응답 에러 코드 정의]를 참고)
    • OnPopupAdClosed : 팝업광고 창 종료
//팝업 델리게이트 등록
Void SomeAction(){
	if (popupAd != null){
		popupAd.OnPopupAdReceiveSuccess += OnPopupAdReceiveSuccess;
		popupAd.OnPopupAdReceiveFailed += OnPopupAdReceiveFailed;
		popupAd.OnPopupAdClosed += OnPopupAdClosed;
	}
}

//팝업 델리게이트 구현
public void OnPopupAdReceiveSuccess(object sender, System.EventArgs args){
	Debug.Log("OnPopupAdReceiveSuccess event received.");
}
public void OnPopupAdReceiveFailed(object sender, ErrorResult errorResult){
	Debug.Log("OnPopupAdReceiveFailed event received. > errorCode : " +
	errorResult.errorCode + ", errorMessage : " + errorResult.errorMessage);
}
public void OnPopupAdClosed(object sender, System.EventArgs args){
Debug.Log("OnPopupAdClosed event received.");
}

//팝업 델리게이트 해제
void OnDestroy(){
	if (popupAd != null) {
		popupAd.OnPopupAdReceiveSuccess -= OnPopupAdReceiveSuccess;
		popupAd.OnPopupAdReceiveFailed -= OnPopupAdReceiveFailed;
		popupAd.OnPopupAdClosed -= OnPopupAdClosed;
	}
	IgawDisplayAdPlugin.destroy ();
}




엔딩 광고 

어플리케이션의 종료 여부를 묻는 팝업과 함께 광고를 노출하는 광고 형태입니다.


인스턴스 생성 및 광고 로드

엔딩광고 노출을 위한 인스턴스를 생성합니다. loadEndingAd API를 이용하여 엔딩광고를 로드합니다. 어플리케이션 시작 시점에서 미리 광고 정보를 로드할 수 있도록 호출하여야 합니다.

public class IgawDASampleScene : MonoBehaviour{
	private string ENDING_SPOTKEY = "endingspotkey";
	void Start(){
		//IgawDisplayAD 2.0.9 부터는 필요하지 않습니다.
		IgawDisplayAdPlugin.loadEndingAd(ENDING_SPOTKEY);
	}
}

+ 엔딩광고스팟키 : 애드팝콘 DA 관리페이지에서 생성한 팝업광고 spotkey


광고 노출

showEndingAd API를 호출하여 광고를 노출합니다. 안드로이드 뒤로가기 버튼 이벤트나 별도의 종료 액션에 연결하여 사용하는 것을 권장합니다.

void Update (){
	if (Input.GetKeyDown (KeyCode.Escape)) {
		IgawDisplayAdPlugin.showEndingAd(ENDING_SPOTKEY);
	}
}


델리게이트

플러그인의 종료처리 대신 직접처리하기를 원할 때에는 제공되는 델리게이트를 등록 및 구현하여 진행하실 수 있습니다. 구현 예시는 다음과 같습니다.
(단, 델리게이트를 설정하게 되면 플러그인의 종료처리 로직은 동작하지 않습니다.)

void Start (){
	// Set Delegate
	IgawDisplayAdPlugin.setEndingAdEventCallbackListener(ENDING_SPOTKEY);
	IgawDisplayAdPlugin.OnBtnClickListener = mOnBtnClickListener;
}

// implement Delegate
// finish = true : 종료버튼클릭
// finish = false : 취소버튼클릭
public void mOnBtnClickListener(bool finish){
	Debug.Log("mOnBtnClickListener event received : " + finish);
}




원스팟 광고

원스팟 광고는 DA, NCPI, VIDEO AD 를 하나의 스팟에서 노출시킬 수 있는 지면입니다.


인스턴스 생성

원스팟 광고 노출을 위한 인스턴스를 생성합니다.

public class IgawDASampleScene : MonoBehaviour{
	private string ONESPOT_SPOTKEY = "원스팟광고스팟키";
	private OneSpotAd OneSpotAd = null;
	
	void Start(){
		OneSpotAd = new OneSpotAd(ONESPOT_SPOTKEY);
	}
}

+ 원스팟광고스팟키 : 애드팝콘 DA 관리페이지에서 생성한 spotkey 


광고 제어

원스팟 광고를 제어하고자 하는 시점에 API를 호출하여 광고를 제어합니다. 

//원스팟 광고 노출
void SomeAction(){
	if(OneSpotAd != null)
	oneSpotAd.showOneSpotAd();
}


델리게이트

원스팟 광고 로드의 성공/실패/창 종료 등 에 대한 델리게이트를 제공합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

    • OnOneSpotAdReceiveSuccess : 원스팟 광고 로딩 성공
    • OnOneSpotAdReceiveFailed : 원스팟 광고 로딩 실패 (전달되는 에러코드는 [APPENDIX : DA 응답 에러 코드 정의]를 참고)
    • OnOneSpotAdClosed : 원스팟 광고 창 종료
    • OnVideoComplete : 원스팟 비디오 광고 노출 완료
//원스팟 델리게이트 등록 
void SomeAction(){
	if(oneSpotAd != null){
		oneSpotAd.OnOneSpotAdReceiveSuccess += OnOneSpotAdReceiveSuccess;
		oneSpotAd.OnOneSpotAdReceiveFailed += OnOneSpotAdReceiveFailed;
		oneSpotAd.OnOneSpotAdClosed += OnOneSpotAdClosed;
                oneSpotAd.OnVideoComplete += OnVideoComplete;
         }
}


//원스팟 델리게이트 구현
public void OnOnespotAdReceiveSuccess(object sender, System.EventArgs args){
	Debug.Log("OnOnespotAdReceiveSuccess event received.");
}
public void OnOneSpotAdReceiveFailed(object sender, ErrorResult errorResult){
	Debug.Log("OnOneSpotAdReceiveFailed event received. > errorCode : " +
	errorResult.errorCode + ", errorMessage : " + errorResult.errorMessage);
}
public void OnOneSpotAdClosed(object sender, System.EventArgs args){
	Debug.Log("OnOneSpotAdClosed event received.");
}
public void OnVideoComplete(object sender, System.EventArgs args){
	Debug.Log("OnVideoComplete event received.");
}

//원스팟 델리게이트 해제
void OnDestroy(){
	if (oneSpotAd != null) {
		oneSpotAd. OnOnespotAdReceiveSuccess -= OnOnespotAdReceiveSuccess;
		oneSpotAd. OnOneSpotAdReceiveFailed -= OnOneSpotAdReceiveFailed;
		oneSpotAd. OnVideoComplete -= OnVideoComplete;
                oneSpotAd. OnOneSpotAdClosed -= OnOneSpotAdClosed;
	}
	IgawDisplayAdPlugin.destroy ();
}




APPENDIX : DA 응답 에러 코드 정의

각 광고 별 이벤트 리스너로 전달되는 에러코드의 정의입니다.

코드메시지설명
200Exception일반 에러
1000Invalid Parameter잘못된 파라미터
9999Unknown Server Error알려지지 않은 서버 에러
2000Invalid Media Key잘못된 앱키
2030Invalid Spot Key잘못된 스팟키
2100Empty Campaign광고 없음
2200Invalid Third Party Name외부 네트워크 정보 로드 실패
3200Native Spot Does Not Initialized네이티브 설정 초기화 오류
5000Server Timeout서버 타임 아웃
5001Load Ad Failed특정 네트워크 광고 로드의 실패
5002No Ad모든 네트워크 광고 로드의 실패



APPENDIX : DA 미디에이션

미디에이션 기능을 사용하기 위해 다음 아티클을 참고하여 진행합니다.

[애드팝콘 DA : 안드로이드 (미디에이션)]