본문 바로가기
유니티 공부/Unity

Unity - Google AdMob 광고 삽입하는 법(플러그인 다운로드, 광고 코드)

by 코딩하는 돼징 2024. 2. 9.
반응형

유니티에 광고 삽입하는법

1. 플러그인 다운로드

아래 사이트에서 Unity 플로그인을 다운로드 받아주세요.

 

시작하기  |  Unity  |  Google for Developers

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

developers.google.com


2. 유니티에 가져오기

다운로드 받은 플로그인을 유니티에 드래그해서 넣어주세요. 그럼 아래와 같이 3가지 폴더가 생깁니다.


3.  Assets - GoogleMobileAds - Setting

여기에서 Setting을 누르면 안내 화면같은게 뜨는데 Enable을 누르면된다.

그리고 모든 설정이 완료되었다면 Inspector창에 아래와 같이 AppID를 적으라는 창이 나온다.

Android같은경우 Google Admob에서 해당 앱설정에 들어가면 아래와 같이 앱ID가 보인다.


4. 광고 코드

본인 같은 경우 전면 광고를 사용해서 전면광고 코드를 넣었다.

전체적인 코드는 아래 사이트에 참고하였다.

 

전면 광고  |  Unity  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 전면 광고 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Interstitial ads are full-screen ads that cover the interf

developers.google.com

01 Google Mobile Ads SDK 초기화

초기화를 하면 SDK는 광고를 로드하고 표시하는데 준비를 하게 된다.

private void Awake()
{
    MobileAds.Initialize((InitializationStatus initStatus) =>
    {
        // This callback is called once the MobileAds SDK is initialized.
    });
}

02 전면광고 로드

코드 자세한 설명은 각주 참조

public void Start()
{
    LoadInterstitialAd();
}
public void LoadInterstitialAd()
{
    // 이전에 로드된 광고가 있는지 확인하고 있다면 제거하고 해제한다.
    if (_interstitialAd != null)
    {
        _interstitialAd.Destroy();
        _interstitialAd = null;
    }

    // 새로 광고를 로드하기위한 요청을 생성한다.
    var adRequest = new AdRequest(); 

    // 광고단위 ID _adUnitId와 adRequest 객체를 전달받아 광고를 로드한다.
    InterstitialAd.Load(_adUnitId, adRequest,
    (InterstitialAd ad, LoadAdError error) =>
    {
        if (error != null || ad == null)
        {
            Debug.LogError("interstitial ad failed to load an ad " +
                                   "with error : " + error);
            return;
        }

        Debug.Log("Interstitial ad loaded with response : "
                + ad.GetResponseInfo());

        _interstitialAd = ad;
        // 성공한 경우 로드된 광고에 대한 이벤트 핸들러를 등록한다.
        RegisterEventHandlers(_interstitialAd);
    });
}

03 광고 표시

현재 광고 표시 가능한 상태인지 여부를 확인한 후 가능한 상태라면 전면광고를 표시하고 아니라면 광고를 다시로드한다.

public void ShowAd()
{
    if (_interstitialAd != null && _interstitialAd.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        _interstitialAd.Show();
    }
    else
    {
        LoadInterstitialAd(); //광고 재로드
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}

04 전면광고에 발생하는 이벤트에 대한 핸들러 등록

private void RegisterEventHandlers(InterstitialAd interstitialAd)
    {
        // 광고 지급 관련 이벤트
        interstitialAd.OnAdPaid += (AdValue adValue) =>
        {
            Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
                adValue.Value,
                adValue.CurrencyCode));
        };
        // 
        interstitialAd.OnAdImpressionRecorded += () =>
        {
            Debug.Log("Interstitial ad recorded an impression.");
        };
        // 광고가 클릭되었을때 이벤트
        interstitialAd.OnAdClicked += () =>
        {
            Debug.Log("Interstitial ad was clicked.");
        };
        // 전면 광고가 열렸을때 호출
        interstitialAd.OnAdFullScreenContentOpened += () =>
        {
            Debug.Log("Interstitial ad full screen content opened.");
        };
        // 전면 광고가 닫혔을때 호출
        interstitialAd.OnAdFullScreenContentClosed += () =>
        {
            Debug.Log("close Scene");
        };
        // 전면 광고가 열리지 못했을때 호출
        interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
        {
            Debug.LogError("Interstitial ad failed to open full screen content " +
                           "with error : " + error);
        };
    }

05 사용 예시

다시하기 버튼에 아래와 같이 설정할 수 있다.

public void forRestartButton()
{
    admob.Instance.ShowAd();
}

 

 

 

 

반응형

댓글