본문 바로가기
Unity

[문제해결] 유니티 + 구글 애드몹의 기본을 알아보자 (2) - 테스트기기추가하기, 로그캣(logcat) 사용하기 (유니티 최신 버전 기준 2019.3~)

by 겜키도키 2020. 5. 1.

이 글은 안드로이드 기준이다.  또한 가장 테스트가 빠른 배너광고를 기준으로 했다.

나는 안드로이드 앱 개발 경험이 없기 때문에 이 단계에서 헤딩을 좀 많이 했다.

이 글의 대상자는 나처럼 애드몹 적용, 테스팅을 위한 로그캣logcat 을 빠르게 확인할 수 있는 간단한 방법을 찾길 원하는 사람을 위해 작성한 글이다.

 

이전 글

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

 


logcat을 통해 TestDeviceID 를 확인하자

 

이전 단계에서 테스트 광고가 정상적으로 확인되었다면

이제 로그캣 logcat이라는 것을 이용하여 내가 빌드한 뒤 테스트하고 있는 디바이스를 테스트 기기(Test Device)로

설정하는 단계가 필요하다.

 

1. 테스트 기기(Test Device Id) 확인하여 추가하기

- 기본적인 logcat 확인하는 방법, 유니티 구글 애드몹 연동을 위한 정확한 테스트기기 아이디 추가하기.

 

구글의 광고는 광고 클릭이나 다운로드 등의 행위 발생 시 광고주가 돈을 지불하는 방식이기 때문에 (당연하겠지만)

특정 앱에서 발생한 광고 클릭이나 다운로드가 정당한 방식으로 이루어졌는지를 까다롭게 검사한다.

돈이 엮여있는 일이니 당연하겠지만 말이다.

 

따라서 테스트 중에는 이 광고 요청과 행위가 명시적으로 테스트라는 것을 알려주어야 한다.

 

이게 내 테스트 광고다.

이게 내가 테스트를 하는 디바이스이다. 

라는것을 구글에 알려주는 것이다.

 

2. 안드로이드 스튜디오 SDK 가 깔려있는 경로로 이동한다.

- 보통 C:/Users/당신의유저명/AppData/Local/Android/Sdk 에 위치한다.

- 유니티 에디터 상에서 조회하는 방법은 아래와 같다.

 

Android sdk 경로확인하기

Edit > Preferences... > External Tools 로 들어가면

 

유니티에서 Android Sdk 경로확인하기

위처럼 경로가 설정되어있을 것이다. (나는 임의의 경로로 지정해서 경고가 뜬다.)

Android SDK Tools 부분의 Browse 를 눌러서 뜨는 창의 경로를 복사한 다음 이동하면 된다.

 

3.  Sdk > platform-tools 로 이동하여 로그캣 (Logcat) 사용하자.

 

platform-tools

 

해당 경로로 이동하면 위와 같은 파일들이 쭈르륵 뜨는데 로그를 확인하기 위해 사용하는 실행파일은 adb.exe 이다.

이건 그냥 클릭하여 실행하면 안 된다.

 

adb.exe 파일이 무엇인가? 관련 문서

 

해당 창에서 Shift + 우클릭 + 여기에 PowerShell 창 열기를 클릭한다.

(cmd가 익숙한 사람들은 그냥 명령 프롬프트를 켜도 상관없다. - 명령프롬프트를 통해 위의 경로까지 이동하여 아래 단계를 따르면 된다.)

 

그러면 명령 창이 하나 뜨는데 여기에 아래의 명령어를 띄어쓰기까지 그대로 입력한다.

 

명령어

.\adb.exe logcat -s Unity Ads

 


로그캣이란 무엇인가? 위 명령어의 의미는?

더보기

로그캣은 유니티 에디터상에서는 확인할 수 없는, 안드로이드 디바이스가 코드를 처리하면서 발생하는 로그들을 확인할 수 있는 방법이다.

 

즉, 빌드된 apk 파일이 디바이스에서 돌아가면서 발생하는 로그를 유니티 에디터의 console 창처럼 로그캣을 통해 실시간으로 확인할 수 있다.

 

유니티 스크립트에서 발생한 Debug.Log, print 함수 메시지까지 모조리 나온다.

단, 이 로그캣을 그냥 실행하게 되면 순식간에 엄청난 로그들이 스쳐 지나가는데,

이때 내가 원하는 로그만 확인하기 위해서는 태그(Tag) 설정을 해 주어야 한다.

 

현재 상황에서는 전문적으로 깊게 알 필요 없다. (급하니까)

 

위의 명령어는 Unity 와 Ads 태그와 관련된 로그만 로그캣에서 확인하겠다는 뜻이다.

아래에 관련 정보링크과 유니티 에디터 상에서 더 쉽게 확인하는 방법을 소개하도록 하겠다.


 

4. 디바이스를 USB로 연결한 채로 이전 글에서 빌드한 앱을 디바이스 상에서 실행시킨다.

 

실행시키면 PowerShell 창에서 Unity 와 Ads 관련된 로그들이 쫙 나타난다.

설정한 태그 관련 로그들이 보인다.

여기서 확인할만한 로그는

로그들

 

Ads 태그의 아래의 로그이다.

Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("33BE2250B43518CCDA7DE426D04EE232") to get test ads on this device.

 

바로 해당 로그에서 내 구글 애드몹 테스트 기기 ID 값을 확인할 수 있게 된다.

구글 애드몹 공식문서에서는 아래와 같이 설명하고 있다. (나는 현재 2020.4.30 기준으로 쓴 것이다.)

구글 애드몹 공식문서의 테스트기기 ID 확인하기

 

테스트 기기 ID 값을 List에 담아 추가 해 놓기 때문에, 다수의 디바이스를 테스트 기기로 추가하고 싶으면 해당 기기들을 연결하여 테스트 기기 값을 알아내면 된다. (나는 하나니까 패스)

 


여기서 발생하는 문제 1. 위 명령어를 입력해도 로그 확인이 되지 않는다? 

더보기

나는 로그 확인이 아예 되지 않은 문제가 있었는데 이 경우에는 Android SDK Manager를 실행하여,

 

SDK manager 실행하기

SDK Tools 탭을 선택하면,

 

Google Play Service 관련 SDK Tools 설치하기.

Google Play Service 관련 SDK Tools 설치가 안되어 있었던 상태여서, 설치했더니 확인이 가능했다.

 


 

이제 스크립트에 테스트 기기 ID를 추가하는 처리를 해주면 된다.(AddTestDevice())

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()
        .AddTestDevice("당신의 디바이스 ID 삽입")
        .Build();

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

 

 

AdRequest 객체를 생성하는 빌더 패턴을 통해 AddTestDevice() 함수를 호출해주면 된다.

빌더 패턴이란 무엇인가?

인자는 당연히 로그캣logcat 으로 확인한 테스트 기기 ID (TestDeviceID)값이 된다.

 

5. 저장한 뒤, 다시 빌드하고 apk 파일을 생성한다.

6. 디바이스에서 실행한다.

 

 

 

똑같이 위와 같은 화면이 나오면 정상적으로 추가된 것이다.

 

+응용

내 테스트 기기가 정상적으로 추가 되었는지 더 정확히 확인하고 싶다면,

광고 이벤트를 구독하여 테스트기기 로그를 찍어보면 된다.

구글 애드몹 공식문서에서 제공하는 광고 이벤트는 아래와 같다.

 

구글 애드몹 광고이벤트

 

스크립트를 다음과 같이 수정한다.

 

using System;
using UnityEngine;
using GoogleMobileAds.Api;

public class TestingAdmob : MonoBehaviour
{
    private BannerView bannerView;
	private AdRequest request;
    
    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();
        });
        
        bannerView.OnAdLoaded += BannerView_OnAdLoaded;
        
    }

    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.
        request = new AdRequest.Builder()
        .AddTestDevice("당신의 디바이스 ID 삽입")
        .Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
    
        private void BannerView_OnAdLoaded(object sender, EventArgs e)
    {
        print("OnAdLoaded");
        foreach (var item in request.TestDevices)
        {
            Debug.Log("TestDevices List" + item);
        }

    }
}

 

 

테스트 기기는 여러 개로 추가할 수 있기 때문에 리스트를 순회하여 확인하면 된다.

나는 한 개니까 하나만 나온다..(가난함)

다시 빌드 후 로그 캣을 확인하면 위에서 설정한 로그를 확인할 수 있다.

 

 

잘 나오는 로그

자 이제 테스트 기기를 추가하는 단계는 끝났다.

 

이제 남은 단계는

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

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

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

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

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

 

 


유니티 에디터상에서 안드로이드 로그캣을 사용하는 방법

 

[부록] 유니티 에디터에서 안드로이드 로그캣 패키지(Android logcat)사용하기 (Unity 2019.3~ 기준)

명령 프롬프트 창을 통해서 로그캣을 확인하기 귀찮으면 빠르게 에디터에서 안드로이드 로그캣을 확인할 수 있다. 바로 유니티 패키지에서 로그캣을 제공해준다. 나는 안드로이드 로그캣을 구글 애드몹 관련된 로..

gamekiddo.tistory.com

아래는 구글 애드몹 테스트 관련 공식 영상이다.

 

 

반응형

댓글