728x90

 

using GoogleMobileAds.Api;
using UnityEngine;


public class AdMobManager : MonoBehaviour
{


    // These ad units are configured to always serve test ads.
#if UNITY_ANDROID
    private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
  private string _adUnitId = "unused";
#endif

    public void Start()
    {
        // Google 모바일 광고 SDK를 초기화합니다.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // 이 콜백은 MobileAds SDK가 초기화되면 호출됩니다.
            LoadRewardedAd();
        });
    }

    private RewardedAd rewardedAd;

    public void LoadRewardedAd()
    {
        // 새 광고를 로드하기 전에 이전 광고를 정리하십시오.
        if (rewardedAd != null)
        {
            rewardedAd.Destroy();
            rewardedAd = null;
        }

        Debug.Log("Loading the rewarded ad.");

        // 광고를 로드하는 데 사용되는 요청을 생성합니다.
        var adRequest = new AdRequest();
        adRequest.Keywords.Add("unity-admob-sample");

        // 광고 로드 요청을 보냅니다.
        RewardedAd.Load(_adUnitId, adRequest,
            (RewardedAd ad, LoadAdError error) =>
            {
                RegisterEventHandlers(ad);

                // 오류가 null이 아니면 로드 요청이 실패한 것입니다.
                if (error != null || ad == null)
                {
                    Debug.LogError("보상형 광고가 광고를 로드하지 못했습니다. " +
                                   "with error : " + error);
                    return;
                }

                Debug.Log("응답으로 로드된 보상형 광고 : " + ad.GetResponseInfo());

                rewardedAd = ad;
            });
    }

    public void ShowRewardedAd()
    {
        if (rewardedAd != null && rewardedAd.CanShowAd())
        {
            rewardedAd.Show((Reward reward) =>
            {
                // 보상 주는 곳.
                Debug.Log(" 보상 주는 곳 // " + reward.Type + " // " + reward.Amount);
            });
        }
    }

    // RewardedAd는 일회용 객체입니다. 즉, 보상형 광고가 표시된 후에는 객체를 다시 사용할 수 없습니다. 다른 보상형 광고를 요청하려면 새 RewardedAd 객체를 만들어야 합니다.
    // 다음 노출 기회에 맞게 보상형 광고를 준비하려면 OnAdFullScreenContentClosed 또는 OnAdFullScreenContentFailed 광고 이벤트가 발생한 후 보상형 광고를 미리 로드합니다.
    private void RegisterEventHandlers(RewardedAd ad)
    {
        // 광고에서 수익이 발생한 것으로 추정될 때 발생합니다.
        ad.OnAdPaid += (AdValue adValue) =>
        {
            Debug.Log("광고에서 수익이 발생한 것으로 추정될 때 발생합니다. " + adValue.Value + " // " + adValue.CurrencyCode);
        };
        // 광고에 대한 노출이 기록될 때 발생합니다.
        ad.OnAdImpressionRecorded += () =>
        {
            Debug.Log("광고에 대한 노출이 기록될 때 발생합니다.");
        };
        // 광고에 대한 클릭이 기록될 때 발생합니다.
        ad.OnAdClicked += () =>
        {
            Debug.Log("광고에 대한 클릭이 기록될 때 발생합니다.");
        };
        // 광고가 전체 화면 콘텐츠를 열 때 발생합니다.
        ad.OnAdFullScreenContentOpened += () =>
        {
            Debug.Log("광고가 전체 화면 콘텐츠를 열 때 발생합니다.");
        };
        // 광고가 전체 화면 콘텐츠를 닫을 때 발생합니다.
        ad.OnAdFullScreenContentClosed += () =>
        {
            Debug.Log("광고가 전체 화면 콘텐츠를 닫을 때 발생합니다.");
            // 다음 보상형 광고 미리 로드
            LoadRewardedAd();
        };
        // 광고가 전체 화면 콘텐츠를 열지 못했을 때 발생합니다.
        ad.OnAdFullScreenContentFailed += (AdError error) =>
        {
            Debug.LogError("광고가 전체 화면 콘텐츠를 열지 못했을 때 발생합니다." + " with error : " + error);
            // 다음 보상형 광고 미리 로드
            LoadRewardedAd();
        };
    }

}

 

728x90
반응형

+ Recent posts