이번에는 유니티에 구글 애드몹 SDK를 연동하여 [Banner 광고]와 [Interstitial 광고]를 달아보도록 하겠습니다.
우선 AdMob 홈페이지에 들어가서 회원가입 후 로그인 합니다.
Google AdMob 사이트 링크 : http://www.google.co.kr/admob
홈페이지에서 [수익 창출] -> [+새로운 앱에서 수익 창출] 합니다.
1. 앱 선택
이미 스토어에 올라간 앱이라면 [앱 검색]
개발 중인 앱이라면 [앱 직접 추가]
이미 추가된 앱의 광고를 생성하려면 [추가한 앱 중에서 선택]
본 포스팅에서는 개발 중인 앱이라 가정하고 [앱 직점 추가] 로 진행
앱 이름과 플랫폼을 선택 후 [앱 추가] 를 누릅니다.
이제 ca-app-pub 로 시작하는 앱 ID가 생성되었음을 볼 수 있습니다.
2. 광고 형식 선택 및 광고 단위 이름 지정
먼저 [배너] 를 선택해주고
[광고 유형] [자동 새로고침] [텍스트 광고 스타일] [광고 단위 이름] 모두 설정해주고 [저장] 을 누릅니다.
앱 ID와 마찬가지로 [광고 단위 ID] 도 생성되었습니다.
3. Firebase 애널리틱스 설정(선택사항)
Firebase 애널리틱스 관련 내용은 다음에 포스팅 할 예정이니 [건너 뛰기] 누릅니다.
4. 구현 안내 보기
Banner 광고 생성을 완료하였으니
Interstitial 광고(전면 광고)도 생성하기 위해 [다른 광고 단위 생성] 합니다.
[전면] 을 선택하고
[광고 유형] 과 [게재빈도 설정] 및 [광고 단위 이름] 을 설정하고 [저장] 합니다.
배너 광고 단위와 전면 광고 단위가 잘 생성되었음을 볼 수 있습니다.
이제 본격적으로 유니티에 연동할 차례입니다.
우선 아래 링크에서 AdMob Unity Plugin(GoogleMobileAds.unitypackage)을 다운로드 받습니다.
Google AdMob Unity Plugin(v3.4.0) 다운로드 링크 : https://github.com/googleads/googleads-mobile-unity/releases/tag/v3.4.0
다운로드한 unitypackage를 유니티 프로젝트에 import 합니다.
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 | using UnityEngine; using System; using GoogleMobileAds.Api; public class AdMobManager : MonoBehaviour { public string android_banner_id; public string ios_banner_id; public string android_interstitial_id; public string ios_interstitial_id; private BannerView bannerView; private InterstitialAd interstitialAd; public void Start() { RequestBannerAd(); RequestInterstitialAd(); ShowBannerAd(); } public void RequestBannerAd() { string adUnitId = string.Empty; #if UNITY_ANDROID adUnitId = android_banner_id; #elif UNITY_IOS adUnitId = ios_bannerAdUnitId; #endif bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Top); AdRequest request = new AdRequest.Builder().Build(); bannerView.LoadAd(request); } private void RequestInterstitialAd() { string adUnitId = string.Empty; #if UNITY_ANDROID adUnitId = android_interstitial_id; #elif UNITY_IOS adUnitId = ios_interstitialAdUnitId; #endif interstitialAd = new InterstitialAd(adUnitId); AdRequest request = new AdRequest.Builder().Build(); interstitialAd.LoadAd(request); interstitialAd.OnAdClosed += HandleOnInterstitialAdClosed; } public void HandleOnInterstitialAdClosed(object sender, EventArgs args) { print("HandleOnInterstitialAdClosed event received."); interstitialAd.Destroy(); RequestInterstitialAd(); } public void ShowBannerAd() { bannerView.Show(); } public void ShowInterstitialAd() { if (!interstitialAd.IsLoaded()) { RequestInterstitialAd(); return; } interstitialAd.Show(); } } | cs |
AdMobManager.cs를 생성하고 위 코드를 복사 붙여넣기 합니다.
빈 게임 오브젝트를 생성하고 AdMobManager.cs를 Add Componet 해줍니다.
플랫폼 별로, banner_id 와 interstitial_id 변수 값에 앞서 얻은 id를 각각 입력해줍니다.
AdMob은 RequestAd() 로 광고를 요청하고 요청에 성공하면 ShowAd()로 광고를 송출하는 형식입니다.
배너광고는 이니셜라이즈 시 Request 하고 바로 Show 합니다.
전면광고는 미리 Request 로 캐싱해 두다가 원하는 상황에 Show 한 후 광고가 닫히면 재요청하는 구조입니다.
메모리 누수를 방지하기 위해
HandleOnInterstitialAdClosed 콜백에서 interstitialAd.Destroy(); 를 해주도록 합니다.
BannerView를 생성할 때 파라미터로 사이즈와 위치를 조절할 수 있는데요
AdSize.SmartBanner 로 설정해주면 디바이스의 해상도에 맞춰서 자동으로 크기 조절이 되고
AdPosition 파라미터로 배너의 위치를 조절할 수 있습니다.
위 스크린샷은 배너가 AdPosition.Top 으로 설정된 모습입니다.
전면 광고는 게임 오버나 버프 지급 등 특정 상황에 송출하도록 합니다.
RequestInterstitialAd() 로 캐싱해 두었던 전면광고를
원하는 상황에 ShowAd() 해줌으로써 광고를 송출시킵니다.
광고 시청이 완료되면 HandleOnInterstitialAdClosed 콜백이 호출되는데
콜백 안에 광고 시청에 대한 보상을 지급하고
RequestInterstitialAd() 로 소모된 광고를 미리 재 요청해놓습니다.
게임 내 애드몹 전면광고가 송출된 모습입니다.
이상으로 포스팅을 마치도록 하겠습니다.