300x250

1. 구글 애드몹 가입하기

 

 

광고를 추가할 어플리케이션을 추가하기위해 앱추가 버튼을 클릭 해주세요.

 

앱이름을 적어주세요.

완료 버튼을 눌러주세요.

 

광고 단위를 눌러주세요.

 

저는 광고보기 버튼을 누르고 봤을때 보상을 주기 위해서 리워드 광고단위를 사용했어요.

 

이름은 마음대로 지으시면 돼요.

 

나중에 여기 있는 아이디를 사용해서 코드에 넣으면돼요.

 

 

 

2. 유니티프로젝트에 패키지 추가하기

 

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

 

시작하기  |  Unity  |  Google Developers

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

developers.google.com

추가가 정상적으로 됐으면 

 

이렇게 나와요.

 

3. 유니티셋팅

 

저기에 앱아이디를 넣어야 하는데 지금은 테스트만 해볼거기 때문에 

 

여기에서 보상형광고 아이디를 테스트용으로 사용 하면됩니다.

 

여기서 주의해야 할게 마지막에 /(슬래시)대신 ~로 바꿔서 넣어줘야 돼요.

 

이곳에 우리에게 필요한 코드가 많이 있어요.

 

UIShop.cs

public class UIShop : MonoBehaviour
{
    private UIHeroShop uiHeroShop;
    public Button btnShowAd;
    public void Init()
    {
        AdMobManager.instance.Init();
        btnShowAd.onClick.AddListener(() =>
        {
            AdMobManager.instance.ShowAds();
        });
    }
}

AdMobManager.cs

using GoogleMobileAds.Api;
using System;
using System.Collections;
using UnityEngine;

public class AdMobManager : MonoBehaviour
{
    private string adUnitId;
    private RewardedAd rewardedAd;

    public static AdMobManager instance;

    public System.Action<Reward> onHandleUserEarnedReward;
    public System.Action<AdFailedToLoadEventArgs> onHandleRewardedAdFailedToLoad;

    public System.Action onHandleRewardedAdFailedToShow;
    public System.Action onHandleRewardedAdClosed;

    private void Awake()
    {
        instance = this;
    }


    public void Init()
    {
        //adUnitId 설정
#if UNITY_EDITOR
        string adUnitId = "unused";
#elif UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
        string adUnitId = "";
#else
        string adUnitId = "unexpected_platform";
#endif

        // 모바일 광고 SDK를 초기화함.
        MobileAds.Initialize(initStatus => { });

        //광고 로드 : RewardedAd 객체의 loadAd메서드에 AdRequest 인스턴스를 넣음
        AdRequest request = new AdRequest.Builder().Build();
        this.rewardedAd = new RewardedAd(adUnitId);
        this.rewardedAd.LoadAd(request);


        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded; // 광고 로드가 완료되면 호출
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad; // 광고 로드가 실패했을 때 호출
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening; // 광고가 표시될 때 호출(기기 화면을 덮음)
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow; // 광고 표시가 실패했을 때 호출
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;// 광고를 시청한 후 보상을 받아야할 때 호출
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed; // 닫기 버튼을 누르거나 뒤로가기 버튼을 눌러 동영상 광고를 닫을 때 호출
    }
    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        Debug.Log("HandleRewardedAdLoaded");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        Debug.Log("HandleRewardedAdFailedToLoad");
        this.onHandleRewardedAdFailedToLoad(args);

    }

    public void HandleRewardedAdOpening(object sender, EventArgs args)
    {
        Debug.Log("HandleRewardedAdOpening");
    }

    public void HandleRewardedAdFailedToShow(object sender, EventArgs args)
    {
        Debug.Log("HandleRewardedAdFailedToShow");
        this.onHandleRewardedAdFailedToShow();
    }

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        Debug.Log("HandleRewardedAdClosed");
        this.onHandleRewardedAdClosed();
    }

    public void HandleUserEarnedReward(object sender, Reward args)
    {
        Debug.Log("HandleUserEarnedReward");
        this.onHandleUserEarnedReward(args);

    }

    public bool IsLoaded()
    {
        return this.rewardedAd.IsLoaded();
    }

    public void ShowAds()
    {
        StartCoroutine(this.ShowAdsRoutine());
    }

    private IEnumerator ShowAdsRoutine()
    {
        while (true)
        {
            bool check = IsLoaded();
            if (check == true)
            {
                this.rewardedAd.Show();
                break;
            }
            else
            {
                Debug.Log("reward ad not loaded.");
            }

            yield return null;
        }
    }
}

 

ID셋팅할때 아까는 /를 ~로 바꿔줬었는데 여기에선 다시 /로 해줘야 돼요.

 

300x250