錨定自適應橫幅

自適應橫幅廣告是下一代響應式廣告,通過優化每個設備的廣告尺寸來最大限度地提高性能。改進了僅支持固定高度的智能橫幅廣告,自適應橫幅廣告讓您可以指定廣告寬度並使用它來確定最佳廣告尺寸。

為了選擇最佳廣告尺寸,自適應橫幅使用固定的縱橫比而不是固定的高度。這導致橫幅廣告在不同設備上佔據更一致的屏幕部分,並提供提高性能的機會。

使用自適應橫幅時,請注意,對於給定的設備和寬度,它們將始終返回恆定大小。在給定設備上測試您的佈局後,您可以確定廣告尺寸不會改變。但是,橫幅廣告素材的大小可能會在不同設備上發生變化。因此,我們建議您的佈局適應廣告高度的差異。在極少數情況下,可能不會填充完整的自適應尺寸,而是在此廣告位中居中放置標準尺寸的廣告素材。

先決條件

何時使用自適應橫幅

自適應橫幅旨在替代行業標準 320x50 橫幅尺寸和它們所取代的智能橫幅格式。

這些橫幅尺寸通常用作錨定橫幅,通常鎖定在屏幕的頂部或底部。

對於此類錨定橫幅,使用自適應橫幅時的縱橫比將類似於標準 320x50 廣告的縱橫比,如下面的三個示例所示:


320x50 橫幅

自適應橫幅

智能橫幅

自適應橫幅更好地利用了可用的屏幕尺寸。此外,與智能橫幅相比,自適應橫幅是更好的選擇,因為:

  • 它使用您提供的任何寬度,而不是強制寬度為全屏,使您能夠在 iOS 上考慮安全區域,並在 Android 上顯示切口。

  • 它為特定設備選擇最佳高度,而不是在不同尺寸的設備之間保持恆定高度,從而減輕設備碎片的影響。

實施說明

在您的應用中實施自適應橫幅廣告時,請記住以下幾點:

  • 你必須知道的認為廣告將被放置在寬度,這應該考慮到設備的寬度以及適用任何安全區或切口
  • 當較小的廣告尺寸無法填充廣告位時,請確保您的廣告視圖背景不透明以符合 AdMob 政策。
  • 確保您使用的是最新版本的 Google Mobile Ads Unity 插件。對於中介,請使用每個中介適配器的最新版本。
  • 自適應橫幅尺寸旨在在使用完整可用寬度時發揮最佳效果。在大多數情況下,這將是所用設備屏幕的整個寬度。請務必考慮適用的安全區域。
  • 使用自適應 AdSize API 時,Google 移動廣告 SDK 將使用針對給定寬度的優化廣告高度來調整橫幅大小。
  • 有三種方法來獲得廣告尺寸自適應: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth景觀, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth的肖像,並AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth在執行時的電流方向。
  • 在給定設備上為給定寬度返回的尺寸始終相同,因此一旦您在給定設備上測試了您的佈局,您就可以確定廣告尺寸不會改變。
  • 錨定橫幅高度永遠不會大於設備高度的 15% 或 90 個密度無關像素中的較小者,並且永遠不會小於 50 個密度無關像素。
  • 對於全寬橫幅,您可以使用AdSize.FullWidth標誌,而不是提供一個特定的寬度。

快速開始

按照以下步驟實現簡單的自適應錨點橫幅。

  1. 獲取自適應橫幅廣告尺寸。您獲得的尺寸將用於請求您的自適應橫幅。要獲得自適應廣告尺寸,請確保:
    1. 以與密度無關的像素獲取正在使用的設備的寬度,或者如果您不想使用屏幕的整個寬度,則設置您自己的寬度。由於統一的API,如Screen.width返回絕對像素,您可以通過設備的規模需要劃分(從檢索MobileAds.Utils.GetDeviceScale()
    2. 使用AdSize.FullWidth標誌全寬橫幅。
    3. 使用的廣告尺寸級別適當的靜態方法,如AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)得到的自適應AdSize對象的當前方位。
  2. 創建BannerView與您的廣告單元ID對象,自適應大小,並為您廣告的相關位置。
  3. 創建一個廣告請求對象,並使用加載的旗幟LoadAd()方法在你準備的廣告視圖,就像你會與一個正常的橫幅廣告請求。

代碼示例

這是一個示例腳本,它加載和重新加載自適應橫幅以適應屏幕的寬度,同時考慮到安全區域:

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.HandleAdOpened;
        this.bannerView.OnAdClosed += this.HandleAdClosed;
        this.bannerView.OnAdLeavingApplication += this.HandleAdLeftApplication;

        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 HandleAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

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

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

    #endregion
}

這裡的功能AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth用於獲取一個橫幅大小在當前界面方向的錨定位置。用於預加載在給定方向拋錨的旗幟,用從相關功能AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidthAdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth