Migración de SDK

Última actualización: febrero de 2023

En esta página, se describen las migraciones de las versiones actuales y anteriores.

Cómo migrar de la versión 7 a la 8

Los formatos de pantalla completa ahora usan un método de carga estático

En la versión 7 del complemento, los anuncios intersticiales y recompensados tenían un método LoadAd() a nivel de la instancia para cargar un anuncio, mientras que los anuncios intersticiales recompensados y los anuncios de aplicación abierta tenían un método Load() estático para cargar anuncios. En la versión 8, todos los formatos de anuncios de pantalla completa (intersticiales, recompensados, intersticiales recompensados y de aplicación abierta) tendrán un método Load() estático para cargar anuncios. Este es un ejemplo de cómo cargar un anuncio intersticial:

Versión 8 (actual)

#if UNITY_ANDROID
const string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
const string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
const string adUnitId = "unexpected_platform";
#endif

private InterstitialAd _interstitialAd;

private void LoadAd()
{
    // Load an interstitial ad
    InterstitialAd.Load(adUnitId, new AdRequest(),
        (InterstitialAd ad, LoadAdError loadAdError) =>
        {
            if (loadAdError != null)
            {
                Debug.Log("Interstitial ad failed to load with error: " +
                           loadAdError.GetMessage());
                return;
            }
            else if (ad == null)
            {
                Debug.Log("Interstitial ad failed to load.");
                return;
            }

            Debug.Log("Interstitial ad loaded.");
            _interstitialAd = ad;
        });
}

Versión 7 (heredada)

#if UNITY_ANDROID
const string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
const string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
const string adUnitId = "unexpected_platform";
#endif

private InterstitialAd _interstitialAd;

private void LoadInterstitialAd()
{
    // Initialize an InterstitialAd.
    _interstitialAd = new InterstitialAd(adUnitId);
    // Called when an ad request has successfully loaded.
    _interstitialAd.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request has failed to load.
    _interstitialAd.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    _interstitialAd.LoadAd(request);
}

private void HandleOnAdLoaded(object sender, EventArgs args)
{
    Debug.Log("Interstitial ad loaded.");
}

private void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    if (args != null)
    {
        Debug.Log("Interstitial ad failed to load with error: " +
                   args.LoadAdError.GetMessage());
    }
}

A continuación, te mostramos un ejemplo de cómo cargar un anuncio recompensado:

Versión 8 (actual)

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

private RewardedAd _rewardedAd;

private void LoadRewardedAd()
{
    // Load a rewarded ad
    RewardedAd.Load(adUnitId, new AdRequest(),
        (Rewarded ad, LoadAdError loadError) =>
        {
            if (loadError != null)
            {
                Debug.Log("Rewarded ad failed to load with error: " +
                           loadError.GetMessage());
                return;
            }
            else if (ad == null)
            {
                Debug.Log("Rewarded ad failed to load.");
                    return;
            }

            Debug.Log("Rewarded ad loaded.");
            _rewardedAd = ad;
        });
}

Versión 7 (heredada)

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

private RewardedAd _rewardedAd;

private void LoadRewardedAd()
{
    // Initialize an InterstitialAd.
    _rewardedAd = new RewardedAd(adUnitId);
    // Called when an ad request has successfully loaded.
    _rewardedAd.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request has failed to load.
    _rewardedAd.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    _rewardedAd.LoadAd(request);
}

private void HandleOnAdLoaded(object sender, EventArgs args)
{
    Debug.Log("Rewarded ad loaded.");
}

private void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    if (args != null)
    {
        Debug.Log("Rewarded ad failed to load with error: " +
                   args.LoadAdError.GetMessage());
    }
}

Utiliza CanShowAd() para comprobar la preparación al momento de mostrar anuncios de pantalla completa.

En la versión 7, los anuncios de pantalla completa (anuncios intersticiales, recompensados, intersticiales recompensados y anuncios de aplicación abierta) tenían el método IsLoaded(), que muestra true si se cargó el anuncio. Debido al cambio en la forma en que se cargan los anuncios, en la versión 8 no tienes acceso al objeto de anuncio de pantalla completa hasta que se carga el anuncio, lo que hace que el método IsLoaded() quede obsoleto.

La versión 8 tiene un método nuevo llamado CanShowAd() que muestra true si aún se puede mostrar el anuncio. Este es un ejemplo de cómo usar CanShowAd() en un anuncio intersticial:

Versión 8 (actual)

private InterstitialAd _interstitalAd;

public void ShowInterstitialAd()
{
    if (_interstitalAd != null && _interstitalAd.CanShowAd())
    {
        _interstitalAd.Show();
    }
    else
    {
        Debug.Log("Interstitial ad cannot be shown.");
    }
}

Versión 7 (heredada)

private InterstitialAd _interstitalAd;

public void ShowInterstitialAd()
{
    if (_interstitalAd != null && _interstitalAd.IsLoaded())
    {
        _interstitalAd.Show();
    }
    else
    {
        Debug.Log("Interstitial ad is not ready yet.");
    }
}

Usa Show(Action) para mostrar anuncios recompensados

En la versión 7 del complemento, los anuncios recompensados tenían el método Show() con un evento OnUserEarnedReward independiente para controlar los indicadores de recompensa del usuario, y el anuncio intersticial recompensado tenía un método Show(Action<Reward>) con una devolución de llamada para controlar el indicador de recompensa del usuario. En la versión 8, los formatos de anuncios intersticiales recompensados y recompensados tendrán un método Show(Action<Reward>) con una devolución de llamada para administrar la notificación de la recompensa para el usuario.

A continuación, se incluye un ejemplo de cómo mostrar un anuncio recompensado:

Versión 8 (actual)

private RewardedAd _rewardedAd;

public void ShowRewardedAd()
{
    if (_rewardedAd != null && _rewardedAd.CanShowAd())
    {
        _rewardedAd.Show((Reward reward) =>
        {
            Debug.Log("Rewarded ad granted a reward: " +
                    reward.Amount);
        });
    }
    else
    {
        Debug.Log("Rewarded ad cannot be shown.");
    }
}

Versión 7 (heredada)

private RewardedAd _rewardedAd;

public void ShowRewardedAd()
{
    if (_rewardedAd != null && _rewardedAd.CanShowAd())
    {
        _rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        _rewardedAd.Show());
    }
    else
    {
        Debug.Log("Rewarded ad is not ready yet.");
    }
}
public void HandleUserEarnedReward(object sender, Reward reward)
{
    Debug.Log("Rewarded ad granted a reward: " +
               reward.Amount);
}

Los delegados de eventos de anuncios ahora adoptan argumentos de tipos específicos

En la versión 7 de la API, usamos EventHandlers para definir los delegados de eventos. En la versión 8, adoptamos delegados genéricos para eventos de anuncios. Como resultado, los eventos ahora emitirán valores de eventos directamente sin que estén unidos a la clase EventArg.

Este es un ejemplo del uso de OnAdPaid (en lugar de OnPaidEvent):

Versión 8 (actual)

private BannerView _bannerView;

public void ConfigureBanner()
{
    _bannerView.OnAdPaid += (AdValue value) =>
    {
        AdValue value = value;
    };
}

Versión 7 (heredada)

private BannerView _bannerView;

public void ConfigureBanner()
{
    _bannerView.OnPaidEvent += (object sender, AdValueEventArg arg) =>
    {
        AdValue value = arg.Value;
    };
}

Los formatos de anuncios ahora se ajustan a una interfaz uniforme

En la versión 7 del complemento, hubo discrepancias en los nombres de los eventos entre los formatos de anuncios de pantalla completa. En la versión 8, cambiamos el nombre de muchos de nuestros métodos de API para que sean coherentes en todos nuestros formatos de anuncios.

En la siguiente tabla, se enumeran los cambios de clase introducidos en la versión 8.

BannerView
v7v8
OnAdLoaded OnBannerAdLoaded
OnAdFailedToLoad OnBannerAdLoadFailed
OnAdOpening OnAdFullScreenContentOpened
OnAdClosed OnAdFullScreenContentClosed
OnPaidEvent OnAdPaid
InterstitialAd
CargaAd() InterstitialAd.Load()
InterstitialAd() InterstitialAd.Load()
OnAdLoaded InterstitialAd.Load()
OnAdFailedToLoad InterstitialAd.Load()
OnAdOpening OnAdFullScreenContentOpened
OnAdClosed OnAdFullScreenContentClosed
OnAdFailedToShow OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
OnPaidEvent OnAdPaid
RewardedAd
CargaAd() RewardedAd.Load()
Anuncio recompensado() RewardedAd.Load()
OnAdLoaded RewardedAd.Load()
OnAdFailedToLoad RewardedAd.Load()
OnAdOpening OnAdFullScreenContentOpened
OnAdClosed OnAdFullScreenContentClosed
OnAdFailedToShow OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
OnPaidEvent OnAdPaid
Mostrar() Mostrar()
OnUserEarnedReward Mostrar()
RewardedInterstitialAd
CargaAd() RewardedInterstitialAd.Load()
OnPaidEvent OnAdPaid
OnAdDidPresentFullScreenContent OnAdFullScreenContentOpened
OnAdDidDismissFullScreenContent OnAdFullScreenContentClosed
OnAdFailedToPresentFullScreenContent OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
AppOpenAd
CargaAd() AppOpenAd.Load()
OnPaidEvent OnAdPaid
OnAdDidPresentFullScreenContent OnAdFullScreenContentOpened
OnAdDidDismissFullScreenContent OnAdFullScreenContentClosed
OnAdFailedToPresentFullScreenContent OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
AdErrorEventArgs
AdErrorEventArgs.AdError Usa AdError directamente.
AdFailedToLoadEventArgs
AdFailedToLoadEventArgs.LoadAdError Usa LoadAdError directamente.
AdValueEventArgs
AdValueEventArgs.AdValue Usa AdValue directamente.