Implementa anuncios de pantalla en pantalla (beta)

Selecciona la plataforma: Android iOS Unity

Pantalla en pantalla

Los anuncios de pantalla en pantalla (PiP) se muestran en una ventana flotante que permanece sobre el contenido de la pantalla, como artículos, feeds o juegos. Este formato permite que los usuarios interactúen con tu app mientras el anuncio permanece visible. Elige este formato para mostrar anuncios gráficos que no ocupen toda la pantalla.

En esta guía, se explica cómo solicitar y mostrar anuncios de pantalla en pantalla en tu app con Google Mobile Ads Unity Plugin.

Antes de comenzar

Antes de continuar, haz lo siguiente:

Carga un anuncio

Para cargar un PictureInPictureAd objeto, crea una solicitud de anuncio y llama al método load:

public void LoadPictureInPictureAd()
{
    // Clean up any existing ad before loading a new one.
    if (_pictureInPictureAd != null)
    {
        _pictureInPictureAd.Destroy();
        _pictureInPictureAd = null;
    }

    // Create our request used to load the ad.
    var adRequest = new AdManagerAdRequest();

    // Send the request to load the ad.
    PictureInPictureAd.Load(_adUnitId, adRequest,
        (PictureInPictureAd ad, LoadAdError error) =>
        {
            if (error != null || ad == null)
            {
                Debug.LogWarning(
                    "Picture-in-picture ad failed to load: " + error);
                return;
            }

            // Capture the PictureInPictureAd reference for later use.
            _pictureInPictureAd = ad;
        });
}

Reemplaza _adUnitId por tu ID de unidad de anuncios.

Muestra el anuncio

Para mostrar el anuncio de pantalla en pantalla, llama al método show. En el siguiente ejemplo, se muestra el anuncio en la posición predeterminada:

public void ShowPictureInPictureAd()
{
    // Use the ad reference saved from the Load callback.
    if (_pictureInPictureAd != null)
    {
        _pictureInPictureAd.Show();
    }
    else
    {
        Debug.Log("No ad to show.");
    }
}

Establece la posición

De forma predeterminada, Google Mobile Ads Unity Plugin muestra un anuncio de pantalla en pantalla en la esquina inferior derecha de la pantalla cuando se muestra por primera vez o en la última posición conocida si se mostró anteriormente. Para personalizar dónde aparece el anuncio, especifica una posición cuando lo muestres. En el siguiente ejemplo, se establece la posición sobre el contenido en la esquina superior izquierda de la pantalla:

public void ShowPictureInPictureAdTopLeft()
{
    // Use the ad reference saved from the Load callback.
    if (_pictureInPictureAd != null)
    {
        _pictureInPictureAd.Show(PictureInPictureAdPosition.TopLeft);
    }
    else
    {
        Debug.Log("No ad to show.");
    }
}

Para conocer todas las posiciones disponibles, consulta PictureInPictureAdPosition.

Escucha eventos de anuncios

Para controlar los eventos del ciclo de vida de los anuncios de pantalla en pantalla, regístrate para recibir eventos de anuncios antes de mostrar tu anuncio. Estos eventos informan interacciones con los anuncios, como clics e impresiones. Estos eventos también informan eventos específicos de pantalla en pantalla, como cuando se muestra o se oculta el anuncio:

private void RegisterEventHandlers(PictureInPictureAd ad)
{
    // Raised when the ad is estimated to have earned money.
    ad.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log($"Picture-in-picture ad paid: {adValue.Value} {adValue.CurrencyCode}");
    };
    // Raised when an impression is recorded for an ad.
    ad.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Picture-in-picture ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    ad.OnAdClicked += () =>
    {
        Debug.Log("Picture-in-picture ad recorded a click.");
    };
    // Raised when the picture-in-picture ad is displayed on the screen.
    ad.OnAdShown += () =>
    {
        Debug.Log("Picture-in-picture ad shown.");
    };
    // Raised when the picture-in-picture ad is hidden from the screen.
    ad.OnAdHidden += () =>
    {
        Debug.Log("Picture-in-picture ad hidden.");
    };
    // Raised when an ad opened full screen content.
    ad.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Picture-in-picture ad opened full screen content.");
    };
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Picture-in-picture ad closed full screen content.");
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogWarning(
            "Picture-in-picture ad failed to open full screen " +
            "content: " + error);
    };
}

Oculta el anuncio

Para quitar el anuncio flotante de la pantalla, llama al método hide. Este método invoca el evento de anuncio oculto:

public void HidePictureInPictureAd()
{
    // Use the ad reference saved from the Load callback.
    if (_pictureInPictureAd != null)
    {
        _pictureInPictureAd.Hide();
    }
    else
    {
        Debug.Log("No ad to hide.");
    }
}

Cómo liberar los recursos de un anuncio

Para evitar fugas de memoria, quita la referencia al objeto de anuncio cuando tu app termine de usarlo. Por ejemplo, cuando tu app ya no muestra el anuncio ni interactúa con él:

public void DestroyPictureInPictureAd()
{
    // Use the ad reference saved from the Load callback.
    if (_pictureInPictureAd != null)
    {
        _pictureInPictureAd.Destroy();
        _pictureInPictureAd = null;
    }
}