본문 바로가기
Unity

[문제해결] 유니티 + 구글 애드몹의 기본을 알아보자 (1) - 플러그인 불러오기, 테스트해보기 - 이후 발생하는 다양한 문제에 대해서 (유니티 최신 버전 기준 2019.3~)

by 겜키도키 2020. 5. 1.

안드로이드 기준이다.

선행되어야 하는 것

- 유니티 프로젝트 빌드 설정이 안드로이드로 되어있어야 한다.
- 가장 빠른 테스트가 가능한 구글 애드몹 배너광고를 기준으로 작성했다.


 

유니티와 구글 애드몹을 연동하기 위해서는

전체적인 흐름부터 이해해야 이후 발생하는 문제에 잘 대처할 수 있게 된다.

나는 배경지식 없이 무작정 시작했더니 너무 많은 시간을 허비했다.

나처럼 헤딩하지 말기를 바라며 이 글을 쓴다.

테스트 광고니, 정식 광고 ID니,  앱 ID 니 테스트 기기 추가니... 등등 이것들은 모두 나중 문제다.

 

가장 먼저 해야 할 일은

1. 광고를 넣고자 하는 유니티 프로젝트에 구글 애드몹 플러그인(+SDK)을 추가하는 것이다.

- 테스트용으로 유니티 새 프로젝트를 만들어도 좋고, 기존의 프로젝트에 불러와도 좋다. 

 

구글의 공식 문서 링크이다.

크게 어렵지 않으니 현재 프로젝트에 지금 버전에 맞는 구글 애드몹 플러그인을 불러오면 된다.

https://developers.google.com/admob/unity/start?hl=ko

 

시작하기  |  Unity  |  Google Developers

Unity에서 앱을 제작 중인 AdMob 게시자를 위한 모바일 광고 SDK입니다.

developers.google.com

들어가면

구글 애드몹 유니티관련 공식 문서

해당 링크를 통해 들어가면 기본 권장사항과 플러그인 다운로드 링크를 제공한다.

플러그인 다운로드 링크를 클릭하면 깃허브로 연결된다. 

 

 

구글 애드몹 깃허브

깃허브링크로 들어가서 하단의

GoogleMobileAds-버전명.unitypackage 파일을 클릭하면 다운로드가 진행된다.

(2020.4.30 기준 구글 애드몹 버전은 v5.1.0 이다.)

 

다운로드한 파일은

 

유니티로 구글 애드몹플러그인 불러오는 방법

유니티 에디터로 돌아와 Assets > Import Package > CustomPackage 를 클릭한다.

구글 애드몹 패키지를 다운로드한 경로로 찾아가 해당 패키지를 선택하여 [열기] 를 클릭한다.

모든 파일을 선택 후 Import 해주면 유니티로 구글 애드몹 플러그인을 불러오는 것은 성공이다.

 

그다음,

 

구글 애드몹 플러그인 로드 후 단계

Assets > External Dependency Manager > Android Resolver > Resolve

 

를 눌러 모바일 SDK 를 불러온다.

구글 애드몹 공식문서에 적혀있는 메뉴명과는 다른데, 3일 전에 업데이트된 구글 애드몹 플러그인을 추가하니 위와 같은 메뉴명으로 수정된 것 같다.

 

여하튼 이런 과정을 진행해주고 나면 구글 애드몹 관련 설정은 끝났다.

 

그다음으로 해야 할 것은

2. 테스트 광고를 출력하여 광고가 정상적으로 나오는지를 확인하는 것이다.

-  그리고 가장 간단하게 확인할 수 있는 배너광고부터 확인하는 것이 좋다.

 


 

구글 애드몹의 코드 흐름은 아래와 같다.

 

- Google SDK 초기화

- 각자 원하는 광고 객체 생성 (배너의 경우 BannerView 객체 생성)

  → 여기서 광고 종류에 따라 각기 다른 처리가 이루어진다.

- AdRequest 타입을 인수로 하는 BannerView 의 LoadAd() 함수를 호출하여 광고를 로드.

 


 

하이어라키에서 빈 오브젝트를 하나 만든 다음 테스트용 스크립트를 하나 만들어서 첨부한다.

공식문서 코드를 그대로 가져오면 되는데, 한 가지 바뀌는 것이 있다.

 

using System;
using UnityEngine;
using GoogleMobileAds.Api;

public class TestingAdmob : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        #if UNITY_ANDROID
            string appId = "ca-app-pub-3940256099942544~3347511713";
        #elif UNITY_IPHONE
            string appId = "ca-app-pub-3940256099942544~1458002511";
        #else
            string appId = "unexpected_platform";
        #endif

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((initStatue) => {
            RequestBanner();
        });
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
        
        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
}

 

현재(2020.4.30) 기준으로 되어있는 공식문서는 최근 구글 애드몹 플러그인이 권장하는 소스코드로 되어 있지 않는 듯하다. 현재는 구글 애드몹 모바일 SDK 초기화하는 구문을 콜백으로 처리해주어야 한다.

 

여기서 이제 명확하게 구분하여 알아두어야 하는 것이 생긴다. 

 

구글 애드몹은 앱 ID (App ID)와 광고 유닛 ID (Ad Unit ID) 라는 것을 필요로 한다.

 

앱ID(App ID) 는 광고가 들어갈 앱을 지칭하는 ID라고 볼 수 있다.

특징은

"ca-app-pub-3940256099942544~3347511713" 

와 같이 물결무늬(~)가 들어간다. 

 

그다음 광고 유닛 ID이다.

앱에서 보일 광고들을 지칭하는 ID라고 볼 수 있다.

 

구글 애드몹은 대표적으로 전면광고, 배너광고, 보상형 광고를 제공하는데, 앱에 속하는 광고 하나당 ID를 한 개 부여한다.
(플랫폼 - 안드로이드, IOS에 따라서 또 다르다)

특징은

"ca-app-pub-3940256099942544/6300978111"

처럼 슬래시(/)가 들어간다.

 

게임과 앱에는 다양한 광고가 존재할 수 있다.

그리고 배너광고도 크기나 상황에 따라 다르게 필요할 수도 있다.

따라서 앱에 필요한 모든 광고는 각 광고 ID를 부여하여 관리한다.

 

구글 애드몹 광고유닛의 발그림 예

검정 상자 : 모바일 앱 화면

 

핑크박스 : 배너 A - 아이디 1개 부과

회색 박스 : 배너 B - 아이디 1개 부과

초록 박스 : 전면광고 C - 아이디 1개 부과

 

 

자 그래서 위의 코드상에 존재하는 ID 값들은 구글 애드몹 계정을 생성하기 전에 테스트할 수 있도록 구글이 제공하는 순수 테스트용 앱 ID와 테스트용 광고 유닛 ID 인 것이다.

 

테스트용 APP ID는 다음과 같다.

ca-app-pub-3940256099942544~3347511713

 

테스트용 광고 유닛 ID는 다음과 같다.

배너 광고 ca-app-pub-3940256099942544/6300978111
전면 광고 ca-app-pub-3940256099942544/1033173712
보상형 동영상 광고 ca-app-pub-3940256099942544/5224354917
네이티브 광고 고급형 ca-app-pub-3940256099942544/2247696110

 


이 앱 ID와 광고 유닛 ID를 어떻게 만들어야 하는 건지 지금 단계에서는 크게 신경 쓸 필요 없다.

이건 구글 애드몹 플러그인과 SDK가 잘 작동하는지 테스트 광고를 확인한 이후 구글 애드몹 사이트에서 계정을 만들어서 생성해주면 그만이다.


이제 유니티 에디터로 돌아가서 다음 단계로 넘어간다.

 

3. 유니티 에디터 상에서 구글 애드몹 App ID를 설정한다.

 

App ID 설정하기

앱 ID를 에디터 상에서 설정해주면 테스트 준비 완료이다.

Assets > Google Mobile Ads > Settings 로 들어간 뒤

우측의 Inspector 란에서 위의 테스트용 앱 아이디를 해당 플랫폼에 맞춰 넣어주면 된다. (여기서는 안드로이드용)

 

App Id Settings

 

 

하단에 친절하게 테스트용 앱 아이디 값을 확인할 수 있다. 

완료 후 플레이를 누른 뒤 Console 창을 확인하면

 

console의 구글 애드몹 로그

위처럼 로그가 찍힌다면 정상적으로 진행이 된 것이다.

하지만 에디터상에서는 광고를 볼 수 없다.

Unity Remote에서도 마찬가지이다.

모바일로 빌드를 한 뒤에, 배너광고 확인이 가능하다.

 

이제 다음 단계로는

 

4. 빌드하여 Apk 파일을 생성한다.

5. 기기에서 실행한다.

 

 

 

 

빌드한 뒤 위와 같이 Test Ad 표식과 이미지가 나오면 성공.

(참고로 나는 하단 배너로 설정해서 위의 이미지처럼 나타난다. 위 소스코드 그대로 사용하면 상단 배너로 출력된다.)

 


이제 남은 단계는

- 내 앱 아이디와 내 광고 아이디를 테스트해보기 위해 테스트 기기를 사전에 설정해주어야 한다.

여기서 좀 골치가 아프다.

안드로이드 Logcat 이라는 것을 통해 로그를 확인하여 테스트 기기 ID값을 확인해야 한다.

여기서 테스트 기기 (TestDevice ID ) 설정이 잘못되면 광고 요청이 되지 않아 광고가 나오지 않는 등의 문제가 많다.

 

구글링을 많이 한 사람들은 구글 플레이 스토어의 Device ID 어플 등을 받아서 해 보았겠지만, 거기 나온 값으로 테스트기기 ID를 설정하면 작동하지 않는 경우도 있는 것 같다. (내가 그랬다.)

 

그다음으로는

 

- 구글 애드몹 계정을 생성한다.

- 구글 애드몹 홈에서 앱을 생성하여 앱 ID를 부여받는다. (플레이 스토어 출시 전이어도 상관없다)

- 광고 아이디를 생성한다. (가장 간단한 배너를 추천한다) - 추후 광고 유닛 아이디는 삭제 가능하다.

- 내 앱 아이디와 테스트 광고 아이디로 테스트해본다. (테스트는 중요하다)

- 내 앱 아이디와 내 광고 아이디로 최종 테스트를 해본다.

 

 

 

글이 길어진 관계로 다음 글에서 계속....

 

 

반응형

댓글