이번에는 Unity 프로젝트에 AdColony SDK 연동을 해보겠습니다! (역시 매우 간단)
AdColony 홈페이지 링크 : https://www.adcolony.com
AdColony SDK 다운로드 링크 : https://github.com/AdColony/AdColony-Unity-SDK-3
위의 AdColony GitHub 링크로 가서
[Clone or download -> Download ZIP]
한 후, 다운로드 받은 애드콜로니 유니티패키지를 프로젝트에 import 합니다.
다음으로 진행하기 전에 기본적인 세팅이 필요한데요
우선 애드콜로니에 회원가입하고 로그인 합니다.
그 다음 [MONETIZATION] 탭에서 [Setup New App] 을 클릭합니다
App의 Platform과 국가, 이름
광고를 Skip 가능하게 할 지와
13세 미만 어린이에게 지도 감독이 필요한 앱인지 여부를 체크합니다.
그리고 앱의 특성이나 출시 국가에 따라 다르겠지만 웬만한 정책위반을 피하기 위해
되도록이면 [Customize Your Ads] 부분에 정치, 종교, 성인 등의 광고 타입은 체크해제 해주는 것이 좋습니다.
모든 세팅이 완료되면 [Create] 합니다.
아래는 광고 App의 기본적 Setup이 완료된 모습입니다.
[AdColony App ID] 는 스크립트를 작성할 때 필요하므로 잘 기억해둡니다.
하단에 디폴트로 생선된 Zone [Ad Zone #1] 이 보일텐데 Zone 세팅을 위해 클릭해줍니다.
[Zone is active] - Yes 해주고
[Zone ID] 도 [AdColony App ID] 와 마찬가지로 스크립트 작성에 필요하므로 잘 기억해둡니다.
Zone Name과 Creative Type을 설정해줍니다. (우리는 비디오 광고를 연동할 것이기 때문에 Video로 설정)
그 다음 [Zone Type] 을 아래와 같이
Value Exchange/V4VC 로 설정해줍니다.
모든 설정을 마치면 [Save] 합니다.
여기까지 되었다면 다시 유니티로 돌아와서
AdColonyManager 라는 스크립트를 만들고
아래의 코드를 복사 붙여넣기 합니다.
애드콜로니 사이트에서 App 세팅할 때 보았던
[AdColony App ID] 와 [Zone ID] 를 각각 플랫폼별 id 변수에 넣어줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | using UnityEngine; using System.Collections.Generic; public class AdColonyManager : MonoBehaviour { private const string android_appId = "xxxxxxxxxxxxxxxxxxx"; private const string android_zoneId = "xxxxxxxxxxxxxxxxxxx"; private const string ios_appId = "xxxxxxxxxxxxxxxxxxx"; private const string ios_zoneId = "xxxxxxxxxxxxxxxxxxx"; private string appId = string.Empty; private string zoneId = string.Empty; private AdColony.InterstitialAd ad = null; void Start() { Initialize(); } private void Initialize() { #if UNITY_ANDROID this.appId = android_appId; this.zoneId = android_zoneId; #elif UNITY_IOS this.appId = ios_appId; this.zoneId = ios_zoneId; #endif AdColony.Ads.OnConfigurationCompleted += (List<AdColony.Zone> zones_) => { Debug.Log("AdColony.Ads.OnConfigurationCompleted called"); if (zones_ == null || zones_.Count <= 0) { Debug.Log("Configure Failed"); } else { Debug.Log("Configure Succeeded."); } }; AdColony.Ads.OnRequestInterstitial += (AdColony.InterstitialAd ad_) => { Debug.Log("AdColony.Ads.OnRequestInterstitial called"); ad = ad_; // to do ... // 광고 요청에 성공했을 때 처리 ShowAd(); }; AdColony.Ads.OnRequestInterstitialFailed += () => { Debug.Log("AdColony.Ads.OnRequestInterstitialFailed called"); // to do ... // 광고 요청에 실패했을 때 처리 }; AdColony.Ads.OnOpened += (AdColony.InterstitialAd ad_) => { Debug.Log("AdColony.Ads.OnOpened called"); }; AdColony.Ads.OnClosed += (AdColony.InterstitialAd ad_) => { Debug.Log("AdColony.Ads.OnClosed called, expired: " + ad_.Expired); }; AdColony.Ads.OnExpiring += (AdColony.InterstitialAd ad_) => { Debug.Log("AdColony.Ads.OnExpiring called"); }; AdColony.Ads.OnRewardGranted += (string zoneId, bool success, string name, int amount) => { Debug.Log(string.Format("AdColony.Ads.OnRewardGranted called\n\tzoneId: " + "{0}\n\tsuccess: {1}\n\tname: {2}\n\tamount: {3}", zoneId, success, name, amount)); if (success) { // to do ... // 광고 시청이 완료되었을 때 처리 // 광고 시청에 대한 보상 지급 등 ... } }; AdColony.AppOptions appOptions = new AdColony.AppOptions(); appOptions.AdOrientation = AdColony.AdOrientationType.AdColonyOrientationAll; AdColony.Ads.Configure(this.appId, appOptions, this.zoneId); } public void RequestAd() { Debug.Log("**** Request Ad ****"); AdColony.AdOptions adOptions = new AdColony.AdOptions(); adOptions.ShowPrePopup = false; adOptions.ShowPostPopup = false; AdColony.Ads.RequestInterstitialAd(this.zoneId, adOptions); } public void ShowAd() { Debug.Log("**** Show Ad ****"); if (this.ad != null) { AdColony.Ads.ShowAd(this.ad); } } } | cs |
RequestAd() 함수로 광고 요청을 보낸 후
요청에 성공했다면 OnRequestInterstitial 콜백을 타고
ShowAd() 함수를 호출되는 구조입니다. (요청에 실패하면 OnRequestInterstitialFailed 콜백)
그리고 ShowAd() 로 광고 시청이 완료되면
OnRewardGranted 콜백이 호출되므로 (success == true)
콜백 안에 광고 시청에 대한 보상을 지급하는 코드를 작성해주면 됩니다.
* 광고 procedure
Initialize() -> RequestAd() -> OnRequestInterstitial -> ShowAd() -> OnRewardedGranted
위와 같은 절차로 여러분의 프로젝트에 코드를 녹여주시고
OnRequestInterstitialFailed 나 OnExpiring 등 기타 콜백함수도 입맛에 맞게 정의해주시면 되겠습니다.
참고로 AdColony는 UnityAds와 다르게 Editor 상에서는 테스트가 불가능하므로 모바일에서 테스트해보시길 바랍니다!
'02.Development > Unity3D' 카테고리의 다른 글
[Unity3D] 구글 플레이 게임 서비스 & 애플 게임 센터 연동 (1/2) #설정편 (2) | 2017.05.08 |
---|---|
[Unity3D] Google AdMob 연동하기 (2) | 2017.04.22 |
[Unity3D] Unity - Gitignore 설정하기 (0) | 2017.04.19 |
[Unity3D] Unity Ads 연동하기 (4) | 2017.04.19 |
[Unity3D] SoundVisualizer 만들기 (1) | 2017.03.19 |