Unity에서 Unity Ads에서 Yandex Mediation으로 마이그레이션

Mobile Ads Unity 플러그인 활성화

Mobile Ads Unity는 Yandex Mobile Ads SDK를 지원하는 Unity3d 게임 플랫폼용 플러그인입니다.

Примечание

  1. SDK를 실행하려면 대상 API 수준 31 이상이 필요합니다.
  2. 모든 유형의 광고를 로드하려면 iOS 12.0 이상이 필요합니다.

플러그인 통합

Примечание

yandex-ads-unity-plugin은 Android 및 iOS 환경에서만 실행됩니다. Unity 편집기에서는 사용할 수 없습니다.

Lite 버전

  1. 디렉터리 yandex-ads-unity-plugin을 다운로드하고 패키지 yandex-mobileads-lite-2.9.0.unitypackage를 추가합니다. Google 리졸버를 설치하라는 메시지가 표시됩니다. Google 리졸버가 이미 프로젝트에 추가된 경우, 확인란을 해제하세요.

    패키지 추가 방법

    플러그인(Assets → Import Package → Custom Package)을 선택한 다음 Import를 클릭합니다.

  2. Google 리졸버를 사용하여 종속성을 설치합니다. auto-resolve를 활성화하거나 메뉴에서 Assets → External Dependency Manager → Android Resolver → Resolve를 선택하세요.

  3. Mobile Ads Unity 플러그인을 테스트하려면 yandex-ads-unity-plugin 리포지토리에서 samples 디렉터리의 샘플 스크립트를 사용합니다. 스크립트를 프로젝트 디렉터리에 복사하고 메인 카메라에 Component로 추가하세요.

대상 API 수준 다운그레이드

대상 API 수준을 30으로 다운그레이드하려면 mainTemplate.gradlelauncherTemplate.gradle에 명시적인 다운그레이드를 추가하세요(프로젝트에서 launcherTemplate을 사용하는 경우).

configurations.all {
    resolutionStrategy {
        force 'androidx.core:core:1.6.0'
        force 'androidx.core:core-ktx:1.6.0'
    }
}

그러나 Google은 오래된 대상 API 수준 버전에서 실행되는 애플리케이션의 업데이트 릴리스에 제한을 두고 있으므로 Target API Level 31로 업그레이드할 것을 권장합니다. 자세한 내용은 문서에서 확인하세요.

오류 설명

전면 Unity Ads가 표시되지 않고 "Incorrect fullscreen view" 오류 발생

iOS에서 전면 광고를 실행할 때 "Incorrect fullscreen view" 오류가 발생할 수 있습니다. 이 문제가 발생하면 Build Phases 설정에서 Copy Bundle Resource 아래에 YandexMobileAdsBundle.bundle 값을 추가했는지 확인하세요. 값이 누락되어 있으면 추가합니다.

광고 형식

Unity Ads 광고를 Yandex Ads Mediation으로 교체하려면 코드에 다음 변경 사항을 적용하세요.

전면 광고

using UnityEngine;
using UnityEngine.Advertisements;

public class InterstitialAdExample : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
    [SerializeField] string _androidAdUnitId = "Interstitial_Android";
    [SerializeField] string _iOsAdUnitId = "Interstitial_iOS";
    string _adUnitId;

    void Awake()
    {
        // 현재 플랫폼에 대한 광고 단위 ID 가져오기:
        _adUnitId = (Application.platform == RuntimePlatform.IPhonePlayer)
            ? _iOsAdUnitId
            : _androidAdUnitId;
    }

    // 광고 단위에 콘텐츠 로드:
    public void LoadAd()
    {
        // 중요! 초기화 후에만 콘텐츠를 로드하세요(이 예시에서는 초기화가 다른 스크립트에서 처리됨).
        Debug.Log("Loading Ad: " + _adUnitId);
        Advertisement.Load(_adUnitId, this);
    }

    // 로드된 콘텐츠를 광고 단위에 표시:
    public void ShowAd()
    {
        // 광고 콘텐츠가 이전에 로드되지 않았다면 이 메서드는 실패한다는 점을 참고하세요
        Debug.Log("Showing Ad: " + _adUnitId);
        Advertisement.Show(_adUnitId, this);
    }

    // Load Listener 및 Show Listener 인터페이스 메서드 구현:
    public void OnUnityAdsAdLoaded(string adUnitId)
    {
        // 선택 사항으로 광고 단위가 콘텐츠를 성공적으로 로드하면 코드를 실행십시오.
    }

    public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message)
    {
        Debug.Log($"Error loading Ad Unit: {adUnitId} - {error.ToString()} - {message}");
        // 선택 사항으로 광고 단위가 다시 시도하는 등 로드에 실패하면 코드를 실행하세요.
    }

    public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message)
    {
        Debug.Log($"Error showing Ad Unit {adUnitId}: {error.ToString()} - {message}");
        // 선택 사항으로 광고 단위가 다른 광고를 로드하는 등 표시되지 않으면 코드를 실행하세요.
    }

    public void OnUnityAdsShowStart(string adUnitId) { }
    public void OnUnityAdsShowClick(string adUnitId) { }
    public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState) { }
}
using UnityEngine;
using YandexMobileAds;
using YandexMobileAds.Base;

public class InterstitialAdExample : MonoBehaviour
{
    //Yandex Partner 인터페이스에서 이 ID를 ad_unit_id로 교체합니다
        [SerializeField] string _androidAdUnitId = "demo-interstitial-yandex";
    [SerializeField] string _iOsAdUnitId = "demo-interstitial-yandex";
    string _adUnitId;
    private Interstitial interstitial;

    void Awake()
    {
        // 현재 플랫폼에 대한 광고 단위 ID 가져오기:
        _adUnitId = (Application.platform == RuntimePlatform.IPhonePlayer)
            ? _iOsAdUnitId
            : _androidAdUnitId;

        interstitial = new Interstitial(_adUnitId);

        //전면 광고에서 발생하는 이벤트를 추적하려면 아래와 같이 적절한 EventHandler에 대리인을 등록하세요.
        // 광고 요청이 성공적으로 로드되었을 때 호출됩니다.
        this.interstitial.OnInterstitialLoaded += this.HandleInterstitialLoaded;
        // 광고 요청을 로드하는 데 실패했을 때 호출됩니다.
        this.interstitial.OnInterstitialFailedToLoad += this.HandleInterstitialFailedToLoad;
        // 클릭 후 사용자가 애플리케이션으로 돌아왔을 때 호출됩니다.
        this.interstitial.OnReturnedToApplication += this.HandleReturnedToApplication;
        // 사용자가 광고를 탭한 후 애플리케이션을 종료하려고 할 때 호출됩니다.
        this.interstitial.OnLeftApplication += this.HandleLeftApplication;
        // 사용자가 광고를 클릭했을 때 호출됩니다.
        this.interstitial.OnAdClicked += this.HandleAdClicked;
        // 광고가 표시될 때 호출됩니다.
        this.interstitial.OnInterstitialShown += this.HandleInterstitialShown;
        // 광고가 종료되었을 때 호출됩니다.
        this.interstitial.OnInterstitialDismissed += this.HandleInterstitialDismissed;
        // 노출이 추적되었을 때 호출됩니다
        this.interstitial.OnImpression += this.HandleImpression;
        // 광고 요청이 표시하는 데 실패했을 때 호출됩니다.
        this.interstitial.OnInterstitialFailedToShow += this.HandleInterstitialFailedToShow;
    }

    // 전면 광고 로드:
    public void LoadAd()
    {
        Debug.Log("Loading Ad: " + _adUnitId);

        AdRequest request = new AdRequest.Builder().Build();
        interstitial.LoadAd(request);
    }

    // 로드된 전면 광고 표시:
    public void ShowAd()
    {
        Debug.Log("Showing Ad: " + _adUnitId);
        if (this.interstitial.IsLoaded())
        {
            interstitial.Show();
        }
        else
        {
            Debug.Log("Interstitial is not ready yet");
        }
    }

    void OnDestroy()
    {
        //광고 정리
        interstitial.Destroy();
    }

    public void HandleInterstitialLoaded(object sender, EventArgs args)
    {
        ShowAd();
        Debug.Log("HandleInterstitialLoaded event received");
    }

    public void HandleInterstitialFailedToLoad(object sender, AdFailureEventArgs args)
    {
        Debug.Log("HandleInterstitialFailedToLoad event received with message: {args.Message}");
    }

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

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

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

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

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

    public void HandleImpression(object sender, ImpressionData impressionData)
    {
        var data = impressionData == null ? "null" : impressionData.rawData;
        Debug.Log("HandleImpression event received with data: {data}");
    }

    public void HandleInterstitialFailedToShow(object sender, AdFailureEventArgs args)
    {
        Debug.Log("HandleInterstitialFailedToShow event received with message: {args.Message}");
    }
}
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;

public class BannerAdExample : MonoBehaviour
{
    // 이 예시의 목적에 따라 아래 버튼들은 기능 테스트를 위한 것입니다.
    [SerializeField] Button _loadBannerButton;
    [SerializeField] Button _showBannerButton;
    [SerializeField] Button _hideBannerButton;

    [SerializeField] BannerPosition _bannerPosition = BannerPosition.BOTTOM_CENTER;

    [SerializeField] string _androidAdUnitId = "Banner_Android";
    [SerializeField] string _iOSAdUnitId = "Banner_iOS";
    string _adUnitId = null; // 지원되지 않는 플랫폼에서는 null로 남아 있습니다.

    void Start()
    {
        // 현재 플랫폼에 대한 광고 단위 ID 가져오기:
#if UNITY_IOS
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

        // 광고를 표시할 준비가 될 때까지 버튼 비활성화:
        _showBannerButton.interactable = false;
        _hideBannerButton.interactable = false;

        // 배너 위치 설정:
        Advertisement.Banner.SetPosition(_bannerPosition);

        // Load Banner 버튼을 클릭할 때 LoadBanner() 메서드를 호출하도록 구성:
        _loadBannerButton.onClick.AddListener(LoadBanner);
        _loadBannerButton.interactable = true;
    }

    // Load Banner 버튼을 클릭할 때 호출할 메서드 구현:
    public void LoadBanner()
    {
        // 로드 이벤트를 SDK에 알리는 옵션 설정:
        BannerLoadOptions options = new BannerLoadOptions
        {
            loadCallback = OnBannerLoaded,
            errorCallback = OnBannerError
        };

        // 배너 콘텐츠로 광고 단위 로드:
        Advertisement.Banner.Load(_adUnitId, options);
    }

    // loadCallback 이벤트가 트리거될 때 실행할 코드 구현:
    void OnBannerLoaded()
    {
        Debug.Log("Banner loaded");

        // Show Banner 버튼을 클릭할 때 ShowBannerAd() 메서드를 호출하도록 구성:
        _showBannerButton.onClick.AddListener(ShowBannerAd);
        // Hide Banner 버튼을 클릭할 때 HideBannerAd() 메서드를 호출하도록 구성:
        _hideBannerButton.onClick.AddListener(HideBannerAd);

        // 두 버튼 활성화:
        _showBannerButton.interactable = true;
        _hideBannerButton.interactable = true;
    }

    // errorCallback 로드 이벤트가 트리거될 때 실행할 코드 구현:
    void OnBannerError(string message)
    {
        Debug.Log($"Banner Error: {message}");
        // 선택 사항으로 다른 광고를 로드하려고 시도하는 등의 추가 코드를 선택적으로 실행하십시오.
    }

    // Show Banner 버튼을 클릭할 때 호출할 메서드 구현:
    void ShowBannerAd()
    {
        // 표시 이벤트를 SDK에 알리는 옵션 설정:
        BannerOptions options = new BannerOptions
        {
            clickCallback = OnBannerClicked,
            hideCallback = OnBannerHidden,
            showCallback = OnBannerShown
        };

        // 로드된 배너 광고 단위 표시:
        Advertisement.Banner.Show(_adUnitId, options);
    }

    // Hide Banner 버튼을 클릭할 때 호출할 메서드 구현:
    void HideBannerAd()
    {
        // 배너 숨기기:
        Advertisement.Banner.Hide();
    }

    void OnBannerClicked() { }
    void OnBannerShown() { }
    void OnBannerHidden() { }

    void OnDestroy()
    {
        // 리스너 정리:
        _loadBannerButton.onClick.RemoveAllListeners();
        _showBannerButton.onClick.RemoveAllListeners();
        _hideBannerButton.onClick.RemoveAllListeners();
    }
}
using UnityEngine;
using UnityEngine.UI;
using YandexMobileAds;
using YandexMobileAds.Base;

public class BannerAdExample : MonoBehaviour
{
    // 이 예시의 목적에 따라 아래 버튼들은 기능 테스트를 위한 것입니다.
    [SerializeField] Button _loadBannerButton;

    [SerializeField] string _androidAdUnitId = "demo-banner-yandex";
    [SerializeField] string _iOSAdUnitId = "demo-banner-yandex";
    string _adUnitId = null;
    private Banner banner;

    void Start()
    {
        // 현재 플랫폼에 대한 광고 단위 ID 가져오기:
#if UNITY_IOS
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

        // 320x50 배너를 생성하고 위치를 설정합니다.
        this.banner = new Banner(adUnitId, AdSize.BANNER_320x50, AdPosition.TopCenter);

        // 배너에서 발생하는 이벤트를 추적하려면 아래와 같이 적절한 EventHandler에 대리인을 등록하십시오.
        banner.OnAdLoaded += this.HandleAdLoaded;
        banner.OnAdFailedToLoad += this.HandleAdFailedToLoad;
        banner.OnReturnedToApplication += this.HandleReturnedToApplication;
        banner.OnLeftApplication += this.HandleLeftApplication;
        banner.OnAdClicked += this.HandleAdClicked;
        banner.OnImpression += this.HandleImpression;

        // 광고를 표시할 준비가 될 때까지 버튼 비활성화:
        _showBannerButton.interactable = false;
        _hideBannerButton.interactable = false;

        // Load Banner 버튼을 클릭할 때 LoadBanner() 메서드를 호출하도록 구성:
        _loadBannerButton.onClick.AddListener(LoadBanner);
        _loadBannerButton.interactable = true;
    }

    // Load Banner 버튼을 클릭할 때 호출할 메서드 구현:
    public void LoadBanner()
    {
        // 빈 광고 요청을 생성합니다.
        AdRequest request = new AdRequest.Builder().Build();
        // 요청으로 배너를 로드합니다.
        banner.LoadAd(request);
    }

    // loadCallback 이벤트가 트리거될 때 실행할 코드 구현:
    void OnBannerLoaded()
    {
        Debug.Log("Banner loaded");

        // Show Banner 버튼을 클릭할 때 ShowBannerAd() 메서드를 호출하도록 구성:
        _showBannerButton.onClick.AddListener(ShowBannerAd);
        // Hide Banner 버튼을 클릭할 때 HideBannerAd() 메서드를 호출하도록 구성:
        _hideBannerButton.onClick.AddListener(HideBannerAd);

        // 두 버튼 활성화:
        _showBannerButton.interactable = true;
        _hideBannerButton.interactable = true;
    }

    // errorCallback 로드 이벤트가 트리거될 때 실행할 코드 구현:
    void OnBannerError(string message)
    {
        Debug.Log($"Banner Error: {message}");
        // 선택 사항으로 다른 광고를 로드하려고 시도하는 등의 추가 코드를 선택적으로 실행하십시오.
    }

    // Show Banner 버튼을 클릭할 때 호출할 메서드 구현:
    void ShowBannerAd()
    {
        // 로드된 배너 광고 단위 표시:
        banner.Show();
    }

    // Hide Banner 버튼을 클릭할 때 호출할 메서드 구현:
    void HideBannerAd()
    {
        // 배너 숨기기:
        banner.Hide();
    }

    void OnDestroy()
    {
        //광고 정리
        banner.Destroy();
        // 리스너 정리:
        _loadBannerButton.onClick.RemoveAllListeners();
        _showBannerButton.onClick.RemoveAllListeners();
        _hideBannerButton.onClick.RemoveAllListeners();
    }

    public void HandleAdLoaded(object sender, EventArgs args)
    {
        Debug.log("HandleAdLoaded event received");
        ShowBannerAd();
    }

    public void HandleAdFailedToLoad(object sender, AdFailureEventArgs args)
    {
        Debug.log("HandleAdFailedToLoad event received with message: {args.Message}");
    }

    public void HandleLeftApplication(object sender, EventArgs args)
    {
        Debug.log("HandleLeftApplication event received");
    }

    public void HandleReturnedToApplication(object sender, EventArgs args)
    {
        Debug.log("HandleReturnedToApplication event received");
    }

    public void HandleAdLeftApplication(object sender, EventArgs args)
    {
        Debug.log("HandleAdLeftApplication event received");
    }

    public void HandleAdClicked(object sender, EventArgs args)
    {
        Debug.log("HandleAdClicked event received");
    }

    public void HandleImpression(object sender, ImpressionData impressionData)
    {
        var data = impressionData == null ? "null" : impressionData.rawData;
        Debug.log("HandleImpression event received with data: {data}");
    }
}

보상형

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;

public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
    [SerializeField] Button _showAdButton;
    [SerializeField] string _androidAdUnitId = "Rewarded_Android";
    [SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
    string _adUnitId = null; // 지원되지 않는 플랫폼에서는 null로 남아 있습니다

    void Awake()
    {
        // 현재 플랫폼에 대한 광고 단위 ID 가져오기:
#if UNITY_IOS
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

        // 광고를 표시할 준비가 될 때까지 버튼 비활성화:
        _showAdButton.interactable = false;
    }

    // 광고 단위에 콘텐츠 로드:
    public void LoadAd()
    {
        // 중요! 초기화 후에만 콘텐츠를 로드하세요(이 예시에서는 초기화가 다른 스크립트에서 처리됨).
        Debug.Log("Loading Ad: " + _adUnitId);
        Advertisement.Load(_adUnitId, this);
    }

    // 광고가 성공적으로 로드되면 버튼에 수신기를 추가하고 활성화하십시오.
    public void OnUnityAdsAdLoaded(string adUnitId)
    {
        Debug.Log("Ad Loaded: " + adUnitId);

        if (adUnitId.Equals(_adUnitId))
        {
            // 버튼을 클릭할 때 ShowAd() 메서드를 호출하도록 구성:
            _showAdButton.onClick.AddListener(ShowAd);
            // 사용자가 클릭할 수 있도록 버튼 활성화:
           _showAdButton.interactable = true;
        }
    }

    // 사용자가 버튼을 클릭할 때 실행할 메서드 구현:
    public void ShowAd()
    {
        // 버튼 비활성화:
        _showAdButton.interactable = false;
        // 그런 다음 광고 표시:
        Advertisement.Show(_adUnitId, this);
    }

    // Show Listener의 OnUnityAdsShowComplete 콜백 메서드를 구현하여 사용자가 보상을 받을 수 있는지 확인:
    public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState)
    {
        if (adUnitId.Equals(_adUnitId) && showCompletionState.Equals(UnityAdsShowCompletionState.COMPLETED))
        {
            Debug.Log("Unity Ads Rewarded Ad Completed");
            // 보상을 부여합니다.

            // 다른 광고 로드:
            Advertisement.Load(_adUnitId, this);
        }
    }

    // Load 및 Show Listener 오류 콜백 구현:
    public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message)
    {
        Debug.Log($"Error loading Ad Unit {adUnitId}: {error.ToString()} - {message}");
        // 오류 세부 정보를 사용하여 다른 광고 로드를 시도할지 여부를 결정하십시오.
    }

    public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message)
    {
        Debug.Log($"Error showing Ad Unit {adUnitId}: {error.ToString()} - {message}");
        // 오류 세부 정보를 사용하여 다른 광고 로드를 시도할지 여부를 결정하십시오.
    }

    public void OnUnityAdsShowStart(string adUnitId) { }
    public void OnUnityAdsShowClick(string adUnitId) { }

    void OnDestroy()
    {
        // 버튼 리스너 정리:
        _showAdButton.onClick.RemoveAllListeners();
    }
}
using UnityEngine;
using UnityEngine.UI;
using YandexMobileAds;
using YandexMobileAds.Base;

public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
    [SerializeField] Button _showAdButton;
    [SerializeField] string _androidAdUnitId = "demo-rewarded-yandex";
    [SerializeField] string _iOSAdUnitId = "demo-rewarded-yandex";
    private RewardedAd rewardedAd;
    string _adUnitId = null; // 지원되지 않는 플랫폼에서는 null로 남아 있습니다

    void Awake()
    {
#if UNITY_IOS
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

        this.rewardedAd = new RewardedAd(_adUnitId);

       // 보상형 광고에서 발생하는 이벤트를 추적하려면 아래와 같이 적절한 EventHandler에 대리인을 등록하십시오.
        // 광고 요청이 성공적으로 로드되었을 때 호출됩니다.
        this.rewardedAd.OnRewardedAdLoaded += this.HandleRewardedAdLoaded;
        // 광고 요청을 로드하는 데 실패했을 때 호출됩니다.
        this.rewardedAd.OnRewardedAdFailedToLoad += this.HandleRewardedAdFailedToLoad;
        // 클릭 후 사용자가 애플리케이션으로 돌아왔을 때 호출됩니다.
        this.rewardedAd.OnReturnedToApplication += this.HandleReturnedToApplication;
        // 사용자가 광고를 탭한 후 애플리케이션을 종료하려고 할 때 호출됩니다.
        this.rewardedAd.OnLeftApplication += this.HandleLeftApplication;
        // 사용자가 광고를 클릭했을 때 호출됩니다.
        this.rewardedAd.OnAdClicked += this.HandleAdClicked;
        // 광고가 표시될 때 호출됩니다.
        this.rewardedAd.OnRewardedAdShown += this.HandleRewardedAdShown;
        // 광고가 종료되었을 때 호출됩니다.
        this.rewardedAd.OnRewardedAdDismissed += this.HandleRewardedAdDismissed;
        // 노출이 추적되었을 때 호출됩니다
        this.rewardedAd.OnImpression += this.HandleImpression;
        // 사용자가 광고와 상호 작용한 것에 대해 보상을 받아야 할 때 호출됩니다.
        this.rewardedAd.OnRewarded += this.HandleRewarded;
        // 광고 요청이 표시하는 데 실패했을 때 호출됩니다.
        this.rewardedAd.OnRewardedAdFailedToShow += this.HandleRewardedAdFailedToShow;

        // 광고를 표시할 준비가 될 때까지 버튼 비활성화:
        _showAdButton.interactable = false;
    }

    // 광고 단위에 콘텐츠 로드:
    public void LoadAd()
    {
        Debug.Log("Loading Ad: " + _adUnitId);
        // 빈 광고 요청을 생성합니다.
        AdRequest request = new AdRequest.Builder().Build();
        // 요청으로 보상형을 로드합니다.
        this.rewardedAd.LoadAd(request);
    }

    // 사용자가 버튼을 클릭할 때 실행할 메서드 구현:
    public void ShowAd()
    {

        if (this.rewardedAd.IsLoaded())
        {
            // 버튼 비활성화:
            _showAdButton.interactable = false;
            rewardedAd.Show();
        }
        else
        {
            Debug.Log("Rewarded Ad is not ready yet");
        }
    }

    // 광고가 성공적으로 로드되면 버튼에 수신기를 추가하고 활성화하십시오.
    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        // 버튼을 클릭할 때 ShowAd() 메서드를 호출하도록 구성:
        _showAdButton.onClick.AddListener(ShowAd);
        // 사용자가 클릭할 수 있도록 버튼 활성화:
        _showAdButton.interactable = true;
        Debug.Log("HandleRewardedAdLoaded event received");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailureEventArgs args)
    {
        Debug.Log("HandleRewardedAdFailedToLoad event received with message: {args.Message}");
    }

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

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

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

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

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

    public void HandleImpression(object sender, ImpressionData impressionData)
    {
        var data = impressionData == null ? "null" : impressionData.rawData;
        Debug.Log("HandleImpression event received with data: {data}");
    }

    public void HandleRewarded(object sender, Reward args)
    {
        Debug.Log("HandleRewarded event received: amout = {args.amount}, type = {args.type}");
    }

    public void HandleRewardedAdFailedToShow(object sender, AdFailureEventArgs args)
    {
        Debug.Log("HandleRewardedAdFailedToShow event received with message: {args.Message}");
    }

    void OnDestroy()
    {
        //광고 정리
        rewardedAd.Destroy();
        // 버튼 리스너 정리:
        _showAdButton.onClick.RemoveAllListeners();
    }
}

지원 문의

Previous