Verankerte adaptive Banner

Adaptive Banner sind die nächste Generation responsiver Anzeigen. Die Anzeigengröße wird an das jeweilige Gerät angepasst, um die Leistung zu optimieren. Anders als bei Smart-Bannern, die eine feste Höhe haben, kannst du mit adaptiven Bannern die Anzeigenbreite festlegen und damit die optimale Anzeigengröße bestimmen.

Bei adaptiven Bannern werden feste Seitenverhältnisse anstatt fester Höhen verwendet, um die beste Anzeigengröße auszuwählen. Banneranzeigen nehmen also unabhängig vom Gerät einen ähnlichen Teil des Bildschirms ein und ermöglichen so eine bessere Leistung.

Beachte, dass bei Verwendung von adaptiven Bannern immer eine feste Größe für ein bestimmtes Gerät und eine bestimmte Breite zurückgegeben wird. Nachdem Sie das Layout auf einem bestimmten Gerät getestet haben, können Sie sicher sein, dass sich die Anzeigengröße nicht mehr ändert. Die Größe des Banner-Creatives kann jedoch je nach Gerät variieren. Daher empfehlen wir, dass Ihr Layout Abweichungen bei der Anzeigenhöhe berücksichtigt. In seltenen Fällen wird die Größe des adaptiven Creatives nicht gefüllt und das Creative der Standardgröße wird in dieser Anzeigenfläche zentriert.

Vorbereitung

Wann Sie adaptive Banner verwenden sollten

Adaptive Banner sollen die Anzeigengröße 320 × 50 sowie das Smart-Banner-Format ersetzen.

Diese Bannergrößen werden häufig als verankerte Banner verwendet, die normalerweise am oberen oder unteren Bildschirmrand fixiert werden.

Bei solchen verankerten Bannern ähnelt das Seitenverhältnis bei adaptiven Bannern dem einer standardmäßigen 320-x-50-Anzeige, wie die folgenden Beispiele veranschaulichen:


Banner im Format 320 x 50

Adaptives Banner

Smart-Banner

Für das adaptive Banner wird die verfügbare Bildschirmgröße besser genutzt. Außerdem ist ein adaptives Banner im Vergleich zu einem Smart-Banner besser geeignet, weil:

  • Dabei wird jede angegebene Breite verwendet, nicht die Vollbildbreite. So können Sie den sicheren Bereich auf iOS-Geräten und Aussparungen unter Android berücksichtigen.

  • Es wird eine optimale Höhe für das jeweilige Gerät ausgewählt, anstatt eine konstante Höhe auf unterschiedlichen Geräten zu haben. Dadurch werden die Auswirkungen der Gerätefragmentierung minimiert.

Implementierungshinweise

Wenn Sie adaptive Banner in Ihrer App implementieren, sollten Sie Folgendes berücksichtigen:

  • Sie müssen die Breite der Ansicht kennen, in der die Anzeige platziert wird. Berücksichtigen Sie dabei die Gerätebreite und alle zutreffenden Bereiche oder Ausschnitte.
  • Achten Sie darauf, dass der Hintergrund der Anzeigenansicht undurchsichtig ist, damit er den AdMob-Richtlinien entspricht, wenn kleinere Anzeigengrößen nicht auf der Anzeigenfläche gefüllt werden.
  • Sie müssen die neueste Version des Google Mobile Ads Unity-Plug-ins verwenden. Verwenden Sie für die Vermittlung die neueste Version jedes Vermittlungsadapters.
  • Die adaptiven Bannergrößen sind auf die volle Breite ausgelegt. In den meisten Fällen entspricht dies der vollen Breite des Bildschirms des verwendeten Geräts. Berücksichtigen Sie dabei die geltenden sicheren Bereiche.
  • Das Google Mobile Ads SDK skaliert das Banner mit einer optimierten Anzeigenhöhe für die angegebene Breite, wenn Sie die adaptiven AdSize APIs verwenden.
  • Es gibt drei Methoden, um eine Anzeigengröße für adaptive Abrufen zu erhalten: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth für Querformat, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth für Hochformat und AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth für die aktuelle Ausrichtung zum Zeitpunkt der Ausführung.
  • Die Größe, die für eine bestimmte Breite auf einem bestimmten Gerät zurückgegeben wird, bleibt immer gleich. Sobald du dein Layout auf einem bestimmten Gerät getestet hast, kannst du sicher sein, dass sich die Anzeigengröße nicht ändert.
  • Die Höhe des verankerten Banners ist niemals größer als 15% der Höhe des Geräts oder unabhängig von der Pixeldichte von 90 Pixeln und niemals unter 50 unabhängige Pixel.
  • Für Banner mit voller Breite können Sie das Flag AdSize.FullWidth verwenden, anstatt eine bestimmte Breite anzugeben.

Kurzanleitung

Führen Sie die folgenden Schritte aus, um ein einfaches adaptives Ankerbanner zu implementieren.

  1. Anzeigengröße für adaptive Banner erhalten Die Größe wird verwendet, um das adaptive Banner anzufordern. So erhalten Sie die adaptive Anzeigengröße:
    1. Du kannst die Breite des verwendeten Geräts in Dichte-unabhängigen Pixeln abrufen oder eine eigene Breite festlegen, wenn du die volle Breite des Bildschirms nicht verwenden möchtest. Da Unity-APIs wie Screen.width absolute Pixel zurückgeben, müssen Sie sie nach Geräteskalierung unterteilen (kann aus MobileAds.Utils.GetDeviceScale() abgerufen werden).
    2. Verwenden Sie das Flag AdSize.FullWidth für Banner mit voller Breite.
    3. Verwende die entsprechenden statischen Methoden in der Klasse „Anzeigengröße“, z. B. AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width), um ein adaptives AdSize-Objekt für die aktuelle Ausrichtung abzurufen.
  2. Erstellen Sie ein BannerView-Objekt mit der Anzeigenblock-ID, der adaptiven Größe und der entsprechenden Position der Anzeige.
  3. Erstellen Sie ein Anzeigenanfrageobjekt und laden Sie das Banner mit der Methode LoadAd() in der vorbereiteten Anzeigenansicht wie bei einer normalen Banneranfrage.

Codebeispiel

Hier ein Beispielskript, mit dem ein adaptives Banner unter Berücksichtigung des sicheren Bereichs an die Bildschirmbreite geladen und aktualisiert wird:

using UnityEngine;
using System;
using GoogleMobileAds.Api;

public class NewMonoBehaviour : MonoBehaviour
{
    private BannerView bannerView;

    // Use this for initialization
    void Start()
    {
        RequestBanner();
    }

    public void OnGUI()
    {
        GUI.skin.label.fontSize = 60;
        Rect textOutputRect = new Rect(
          0.15f * Screen.width,
          0.25f * Screen.height,
          0.7f * Screen.width,
          0.3f * Screen.height);
        GUI.Label(textOutputRect, "Adaptive Banner Example");
    }

    private void RequestBanner()
    {
        // These ad units are configured to always serve test ads.
        #if UNITY_EDITOR
            string adUnitId = "unused";
        #elif UNITY_ANDROID
            string adUnitId = "ca-app-pub-3212738706492790/6113697308";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3212738706492790/5381898163";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Clean up banner ad before creating a new one.
        if (this.bannerView != null)
        {
            this.bannerView.Destroy();
        }

        AdSize adaptiveSize =
                AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);

        this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);

        // Register for ad events.
        this.bannerView.OnAdLoaded += this.HandleAdLoaded;
        this.bannerView.OnAdFailedToLoad += this.HandleAdFailedToLoad;
        this.bannerView.OnAdOpening += this.HandleAdOpening;
        this.bannerView.OnAdClosed += this.HandleAdClosed;

        AdRequest adRequest = new AdRequest.Builder()
            .AddTestDevice(AdRequest.TestDeviceSimulator)
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

        // Load a banner ad.
        this.bannerView.LoadAd(adRequest);
    }

    #region Banner callback handlers

    public void HandleAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
        MonoBehaviour.print(String.Format("Ad Height: {0}, width: {1}",
            this.bannerView.GetHeightInPixels(),
            this.bannerView.GetWidthInPixels()));
    }

    public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
                "HandleFailedToReceiveAd event received with message: " + args.Message);
    }

    public void HandleAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpening event received");
    }

    public void HandleAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    #endregion
}

Hier wird die Funktion AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth verwendet, um die Größe eines Banners an einer verankerten Position für die aktuelle Ausrichtungsausrichtung abzurufen. Wenn du ein verankertes Banner in einer bestimmten Ausrichtung vorab laden möchtest, verwende die entsprechende Funktion von AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth und AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth.