로딩중입니다
애드팝콘 SSP : 유니티 iOS
9/8/2017 10:41:50 AM

애드팝콘 SSP 연동하기 : 유니티 iOS

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

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

[애드팝콘 서비스 안내]


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

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

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



SDK 다운로드 및 설치


아래 다운로드 링크를 통하여 최신 유니티 iOS 플러그인 패키지를 다운로드 합니다.

[애드팝콘 SSP iOS 유니티 SDK 다운로드]


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

Importing package 팝업창에서 애드팝콘 오퍼월에 필요한 아래 항목만을 선택하여 import 합니다.




코드연동

IDFA 설정

Adsupport Framework를 Dependencies에 추가합니다.

CAUTION!!! AdSupport Framework가 추가되지 않으면 애드팝콘 SSP 서비스가 정상 동작 하지 않습니다.


로그 수준 설정

SDK에서 노출하는 로그의 수준을 설정할 수 있습니다.

setLogLevel  API를 이용하여 설정하며 수준을 결정하는 값은 AdPopcornSSPPluginIOS 에 정의된 enum을  사용하며 각 수준은 다음과 같습니다.

  • AdPopcornSSPLogInfo  : info 수준의 가장 기본적인 로그 만을 노출합니다. 
  • AdPopcornSSPLogDebug  : info를 포함한 Debug 수준의 로그를 노출합니다.
  • AdPopcornSSPLogTrace  : 모든 로그를 노출합니다.
AdPopcornSSPPluginIOS.SetLogLevel(AdPopcornSSPPluginIOS.AdPopcornSSPLogDebug);

배너 광고

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


인스턴스 생성

배너 광고 노출을 위해 SSPInitWithBannerViewSize API를 호출하여 인스턴스를 생성합니다. 각 파라미터의 설명과 사용 예시는 다음과 같습니다.

  • size : 배너뷰의 크기
  • origin : 배너뷰의 위치
  • appKey : 발급받은 IGAWorks 앱키
  • placementId : 애드팝콘 SSP 메뉴에서 생성한 플레이스먼트아이디
public class IgawSSPSampleScene : MonoBehaviour{

	private string BANNER_PLACEMENTId = "placementId";

	void Start(){   
		AdPopcornSSPPluginIOS.SSPInitWithBannerViewSize(AdPopcornSSPPluginIOS.SSPBannerViewSize320x50, 0.0f, 568.0f - 50.0f, 
                “YOUR_APP_KEY”, "BANNER_PLACEMENTId");
} }


배너 광고 요청

SSPBannerViewLoadRequest API 를 호출하여 광고를 불러 옵니다. 

AdPopcornSSPPluginIOS.SSPBannerViewLoadRequest();


배너크기

애드팝콘 SSP 배너는 현재 iPhone, iPod Touch의 사이즈(W:320, H:50)만 지원하고 있으며, SSPBannerViewSize320x50 , SSPBannerViewSize300x250 로
정의되어 있는 상수를 사용하시면 됩니다.


광고제어

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

// 배너 광고 종료
AdPopcornSSPPluginIOS.SSPBannerViewStopAd();


광고 전환 주기

SSPBannerViewSetAdRefreshRate API를 이용하여 수신한 광고의 전환주기를 설정합니다. 최소 30초에서 최대 300초로 설정할 수 있습니다.

별도로 설정하지 않을 경우 기본값(60초)으로 유지됩니다.

SSPBannerViewSetAdRefreshRate -1로 설정 시 Igaw 광고가 로드된 후 자동으로 refresh 가 되지 않습니다.

단, 미디에이션 네트워크 광고는 해당 기능을 제공하는 업체에 대해서만 설정이 적용됩니다.

AdPopcornSSPPluginIOS.SSPBannerViewSetAdRefreshRate(37);


델리게이트

배너광고에서 발생하는 이벤트에 대한 델리게이트를 제공합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

  • sspBannerViewDidLoadAd : 배너광고 로드 성공
  • sspBannerViewdidFailToReceiveAdWithError : 배너광고 로드 실패 (에러코드는 [APPENDIX : SSP 응답 에러 코드 정의]를 참고)
  • sspBannerViewWillLeaveApplication : 배너광고 클릭
public class MySampleScene : MonoBehaviour {

	// Use this for initialization
	void Start () {
		AdPopcornSSPPluginIOS.AdPopcornSSPSetCallbackHandler("MySampleScene");

		// 델리게이트 핸들러 등록
		AdPopcornSSPPluginIOS.SSPBannerViewSetDelegate();

		// 델리게이트 등록
		AdPopcornSSPPluginIOS.sspBannerViewDidLoadAd += HandleSSPBannerViewDidLoadAd;
		AdPopcornSSPPluginIOS.sspBannerViewDidFailToReceiveAdWithError += HandleSSPBannerViewDidFailToReceiveAdWithError;
		AdPopcornSSPPluginIOS.sspBannerViewWillLeaveApplication += HandleSSPBannerViewWillLeaveApplication;
	}

        // 델리게이트 구현
	public void HandleSSPBannerViewDidLoadAd()
	{
		Debug.Log ("IgaworksADSample HandleSSPBannerViewDidLoadAd");
	}
	public void HandleSSPBannerViewDidFailToReceiveAdWithError(string error)
	{
		Debug.Log ("IgaworksADSample HandleSSPBannerViewDidFailToReceiveAdWithError : " + error);
	}
	public void HandleSSPBannerViewWillLeaveApplication()
	{
		Debug.Log ("IgaworksADSample HandleSSPBannerViewWillLeaveApplication");
	}
}



전면 광고

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


인스턴스 생성

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

public class IgawSSPSampleScene : MonoBehaviour{

	private string INTERSTITIAL_PLACEMENTId = "interstitialplacementId";

	void Start(){   
		AdPopcornSSPPluginIOS.SSPInterstitialAdInitWithKey(“YOUR_APP_KEY”, "INTERSTITIAL_PLACEMENTId");
	}
}

+ 전면광고플레이스먼트키 : 애드팝콘 SSP 관리페이지에서 생성한 전면광고 placementId


광고요청

SSPInterstitialAdLoadRequest API를 호출하여 전면광고를 요청합니다. (SSP 1.0.3in 버전부터 사용가능합니다)

AdPopcornSSPPluginIOS.SSPInterstitialAdLoadRequest();


광고노출

SSPInterstitialAdPresentFromViewController API를 호출하여 전면광고를 노출합니다.

AdPopcornSSPPluginIOS.SSPInterstitialAdPresentFromViewController();


비디오 광고

구글에서 제공하는 IMA SDK를 기반으로 전면 비디오 광고를 제공하고 있습니다.

전면 지면 에서 비디오 광고를 노출하고자 할 경우 , IMA SDK를 필수적으로 추가 하여야 합니다.


Add IMA SDK

아래 링크의 압축 파일에 포함된 AdPopcornSSPVast를 프로젝트에 추가 합니다.

해당 폴더에는 구글에서 제공 하는 IMA framework와 애드팝콘 어댑터가 포함 되어 있습니다.

[IGAWORKS IMA SDK 다운로드]

델리게이트

전면광고에서 발생하는 이벤트에 대한 델리게이트를 제공합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

  • sspInterstitialAdDidLoad : 전면광고 로드 성공
  • sspInterstitialAdDidFailToReceiveAdWithError : 전면광고 로드 실패 (에러코드는 [APPENDIX : SSP 응답 에러 코드 정의]를 참고)
  • sspInterstitialAdWillLeaveApplication : 전면광고 클릭
  • sspInterstitialAdWillOpen : 전면광고 오픈 직전에 호출
  • sspInterstitialAdDidOpen : 전면광고 오픈 직후에 호출
  • sspInterstitialAdWillClose : 전면광고 닫기 직전에 호출
  • sspInterstitialAdDidClose :  전면광고 닫은 직후에 호출
public class MySampleScene : MonoBehaviour {

	// Use this for initialization
	void Start () {
		AdPopcornSSPPluginIOS.AdPopcornSSPSetCallbackHandler("MySampleScene");

		// 델리게이트 핸들러 등록
		AdPopcornSSPPluginIOS.SSPInterstitialAdSetDelegate();

		// 델리게이트 등록
		AdPopcornSSPPluginIOS.sspInterstitialAdDidLoad += HandleSSPInterstitialAdDidLoad;
		AdPopcornSSPPluginIOS.sspInterstitialAdDidFailToReceiveAdWithError += HandleSSPInterstitialAdDidFailToReceiveAdWithError;
		AdPopcornSSPPluginIOS.sspInterstitialAdWillLeaveApplication += HandleSSPInterstitialAdWillLeaveApplication;
		AdPopcornSSPPluginIOS.sspInterstitialAdWillOpen += HandleSSPInterstitialAdWillOpen;
		AdPopcornSSPPluginIOS.sspInterstitialAdDidOpen += HandleSSPInterstitialAdDidOpen;
		AdPopcornSSPPluginIOS.sspInterstitialAdWillClose += HandleSSPInterstitialAdWillClose;
		AdPopcornSSPPluginIOS.sspInterstitialAdDidClose += HandleSSPInterstitialAdDidClose;
	}

        // 델리게이트 구현
	public void HandleSSPInterstitialAdDidLoad()
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdDidLoad");
	}
	public void HandleSSPInterstitialAdDidFailToReceiveAdWithError(string error)
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdDidFailToReceiveAdWithError : " + error);
	}
	public void HandleSSPInterstitialAdWillLeaveApplication()
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdWillLeaveApplication");
	}
	public void HandleSSPInterstitialAdWillOpen()
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdWillOpen");
	}
	public void HandleSSPInterstitialAdDidOpen()
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdDidOpen");
	}
	public void HandleSSPInterstitialAdWillClose()
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdWillClose");
	}
	public void HandleSSPInterstitialAdDidClose()
	{
		Debug.Log ("IgaworksADSample HandleSSPInterstitialAdDidClose");
	}
}


리워드 비디오 광고

리워드를 제공하는 비디오 광고 입니다. 비디오 광고 종료 시 , event callback 으로 설정하신 리워드 정보를 전달 합니다.


Add IMA SDK

아래 링크의 압축 파일에 포함된 AdPopcornSSPVast를 프로젝트에 추가 합니다.

해당 폴더에는 구글에서 제공 하는 IMA framework와 애드팝콘 어댑터가 포함 되어 있습니다.

[IGAWORKS IMA SDK 다운로드]


리워드 비디오 광고 인스턴스 생성

리워드 비디오 광고 노출을 위한 인스턴스를 생성 합니다.

public class IgawSSPSampleScene : MonoBehaviour{
	void Start(){   
	AdPopcornSSPPluginIOS.SSPRewardVideoAdInitWithKey(“YOUR_APP_KEY”, "REWARD_VIDELO_PLACEMENTId");
	}
}
+YOUR_APP_KEY = IGAWorks에서 앱을 등록하고 받은 앱키.
+ 리워드 비디오 플레이스먼트키 : 애드팝콘 SSP 관리페이지에서 생성한 리워드 비디오 광고 placementId

리워드 비디오 광고 요청

SSPRewarVideoAdLoadRequest API를 호출하여 전면광고를 요청합니다.

AdPopcornSSPPluginIOS.SSPRewardVideoAdLoadRequest();


리워드 비디오 광고 노출

SSPRewardVideoAdPresentFromViewController API를 호출하여 전면광고를 노출합니다.

AdPopcornSSPPluginIOS.SSPInterstitialAdPresentFromViewController();


리워드 비디오 광고 델리게이트 설정

리워드 비디오 광고에서 발생하는 이벤트에 대한 델리게이트를 제공 합니다.

제공 되는 델리게이트와 구현 예시는 다음과 같습니다.

  • sspLoadRewardVideoAdSuccess : 리워드 비디오 광고 로드 성공
  • sspLoadRewardVideoAdFailedWithError: 리워드 비디오 광고 로드 실패
    에러코드는 [APPENDIX : SSP 응답 에러 코드 정의]를 참고
  • sspShowRewardVideoAdSuccess : 리워드 광고 노출 성공
  • sspShowRewardVideoAdFailed : 리워드 비디오 광고 노출 실패
  • sspRewardVideoAdClosed : 리워드 비디오 광고 종료
  • sspRewardVideoAdPlayCompletedWithReward : 리워드 비디오 광고 재생 완료
public class MySampleScene : MonoBehaviour {							
											
	// Use this for initialization								
	void Start () {									
	AdPopcornSSPPluginIOS.AdPopcornSSPSetCallbackHandler("MySampleScene");			
	
        // 델리게이트 핸들러 등록								
	AdPopcornSSPPluginIOS.SSPRewardVideoAdSetDelegate();																
	
        // 델리게이트 등록										
        AdPopcornSSPPluginIOS.sspLoadRewardVideoAdSuccess += HandleSSPLoadRewardVideoAdSuccess;			
       	AdPopcornSSPPluginIOS.sspLoadRewardVideoAdFailedWithError += HandleSSPLoadRewardVideoAdFailedWithError;	
       	AdPopcornSSPPluginIOS.sspShowRewardVideoAdSuccess += HandleSSPShowRewardVideoAdSuccess;		
       	AdPopcornSSPPluginIOS.sspShowRewardVideoAdFailed += HandleSSPShowRewardVideoAdFailed;			
       	AdPopcornSSPPluginIOS.sspRewardVideoAdClosed += HandleSSPRewardVideoAdClosed;			
       	AdPopcornSSPPluginIOS.sspRewardVideoAdPlayCompletedWithReward += HandleSSPRewardVideoAdPlayCompletedWithReward;											
        
        // 델리게이트 구현									
	public void HandleSSPLoadRewardVideoAdSuccess()						
   	{										
	}										
   	public void HandleSSPLoadRewardVideoAdFailedWithError(string error)				
   	{										
	}
        public void HandleSSPShowRewardVideoAdSuccess ()						
   	{										
	}										
   	public void HandleSSPShowRewardVideoAdFailed ()						
   	{										
	}											
        public void HandleSSPRewardVideoAdClosed ()						
   	{										
	}										
	public void HandleSSPRewardVideoAdPlayCompletedWithReward (string reward)			
   	{									
	}										
	void onDestroy(){									
	// 델리게이트 해제										
        AdPopcornSSPPluginIOS.sspLoadRewardVideoAdSuccess -= HandleSSPLoadRewardVideoAdSuccess;			
       	AdPopcornSSPPluginIOS.sspLoadRewardVideoAdFailedWithError -= HandleSSPLoadRewardVideoAdFailedWithError;	
       	AdPopcornSSPPluginIOS.sspShowRewardVideoAdSuccess -= HandleSSPShowRewardVideoAdSuccess;		
       	AdPopcornSSPPluginIOS.sspShowRewardVideoAdFailed -= HandleSSPShowRewardVideoAdFailed;			
       	AdPopcornSSPPluginIOS.sspRewardVideoAdClosed -= HandleSSPRewardVideoAdClosed;			
       	AdPopcornSSPPluginIOS.sspRewardVideoAdPlayCompletedWithReward -= HandleSSPRewardVideoAdPlayCompletedWithReward;	
        }										
}
CAUTION!!!  use of @import when modules are disabled 에러가 발생하는 것은 AdPopcornSSPVastPlayer.h 파일에
import 되어 있는 @import GoogleInteractiveMediaAds; 을 찾을 수 없어 발생하는 에러 입니다.
해당 에러가 발생할 경우 아래와 같이 추가 설정을 진행 부탁 드립니다.




APPENDIX : SSP 미디에이션

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

[애드팝콘 SSP : iOS (미디에이션)]



APPENDIX : SSP 응답 에러 코드 정의

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

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