錨定自動調整橫幅廣告

自動調整橫幅廣告是新一代的回應式廣告,可根據各種裝置的廣告大小進行最佳化,藉此提升成效。自動調整橫幅廣告僅支援固定高度,在智慧型橫幅廣告上進行改善,可讓您指定廣告寬度並據以決定最理想的廣告大小。

為了選擇最適合的廣告大小,自動調整橫幅廣告會使用固定的顯示比例,而非固定高度。這會導致不同裝置上的橫幅廣告比例更加一致,有助提升效能。

使用自動調整橫幅廣告時,請注意,這類廣告一律會針對特定裝置和寬度傳回固定大小。當您在特定裝置上測試版面配置後,就能確定廣告大小不會改變。不過,橫幅廣告素材的大小可能會因裝置而不同。因此,建議您讓版面配置能因應廣告高度的變化。在極少數情況下,系統可能不會填入完整的自動調整大小,而會將標準大小的廣告素材改在這個版位的中央。

必要條件

自動調整橫幅廣告的使用時機

自動調整橫幅廣告旨在直接取代業界標準的 320x50 橫幅廣告大小,以及要取代的智慧型橫幅廣告格式。

這些橫幅廣告大小通常以錨定橫幅廣告的形式使用,這種橫幅廣告通常會固定在畫面頂端或底部。

對於這類錨定橫幅廣告,自動調整橫幅廣告的顯示比例與標準 320x50 廣告的長寬比類似,如以下三個範例所示:


320x50 橫幅廣告

自動調整橫幅廣告

智慧型橫幅廣告

自動調整橫幅廣告會利用可用的螢幕大小。此外,與智慧型橫幅廣告相比,自動調整橫幅廣告是更好的選擇,原因如下:

  • 這個模式會使用您提供的任何寬度,而不會強制將寬度強制為全螢幕,方便您考量 iOS 上的安全區域以及 Android 的螢幕凹口。

  • 這個選項會針對特定裝置選取最佳高度,而非為不同尺寸的裝置設定固定高度,以減少裝置畫面分割效果。

實作注意事項

在應用程式中導入自動調整橫幅廣告時,請注意下列事項:

  • 您必須知道廣告刊登時的檢視畫面寬度,且應將裝置寬度和所有適用的安全區域或裁切情況納入考量
  • 如果放送較小的廣告尺寸無法填滿廣告版位,請確保廣告檢視背景不透明符合 AdMob 政策。
  • 確認您使用的是最新版的 Google 行動廣告 Unity 外掛程式。如果是中介服務,請使用每個中介服務轉接程式的最新版本。
  • 自動調整橫幅廣告大小在填滿可用寬度時,成效最佳。在多數情況下,這會是使用中裝置螢幕的完整寬度。請務必考量適用的安全區域。
  • 使用自動調整式 AdSize API 時,Google Mobile Ads SDK 會根據指定寬度,將橫幅廣告調整為適合的廣告高度。
  • 有三種方法可取得自動調整廣告大小的方法:AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth 適用於橫向、AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth 代表直向,以及執行時目前螢幕方向的 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
  • 在特定裝置上,特定寬度傳回的尺寸一律相同,因此,當您在特定裝置上測試版面配置後,就能確定廣告大小不會改變。
  • 錨定橫幅廣告高度絕不會大於裝置高度或 90 像素密度獨立像素的 15% 或 90 像素密度獨立像素,絕不會小於 50 像素密度獨立像素。
  • 對於全寬度橫幅廣告,您可以使用 AdSize.FullWidth 標記,而不是提供特定寬度。

快速入門導覽課程

請按照下列步驟導入簡易自動調整錨定橫幅廣告。

  1. 取得自動調整橫幅廣告大小。您取得的尺寸會用於請求自動調整橫幅廣告。如要取得自動調整廣告大小,請務必:
    1. 取得使用中的裝置寬度 (以密度獨立像素為單位),或者如果不想用整個螢幕的寬度,請自行設定寬度。由於 Unity API (例如 Screen.width) 會傳回絕對像素,因此您必須依裝置比例分割 (可從 MobileAds.Utils.GetDeviceScale() 擷取)。
    2. 如果是全寬度橫幅廣告,請使用 AdSize.FullWidth 旗標。
    3. 在廣告大小類別上使用適當的靜態方法,例如 AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width),以取得目前螢幕方向的自動調整 AdSize 物件。
  2. 使用廣告單元 ID、自動調整大小及廣告的相關位置,建立 BannerView 物件。
  3. 建立廣告請求物件,並在準備的廣告檢視畫面中使用 LoadAd() 方法載入橫幅廣告,就像使用一般的橫幅廣告請求一樣。

程式碼範例

以下範例指令碼會載入並重新載入自動調整橫幅廣告以配合螢幕寬度,並考量安全區域:

using UnityEngine;
using System;
using GoogleMobileAds.Api;

public class AdaptiveBannerSample : MonoBehaviour
{
    private BannerView _bannerView;

    // Use this for initialization
    void Start()
    {
        // Set your test devices.
        // https://developers.google.com/admob/unity/test-ads
        RequestConfiguration requestConfiguration = new RequestConfiguration
        {
            TestDeviceIds = new List<string>
            {
                AdRequest.TestDeviceSimulator,
                // Add your test device IDs (replace with your own device IDs).
                #if UNITY_IPHONE
                "96e23e80653bb28980d3f40beb58915c"
                #elif UNITY_ANDROID
                "75EF8D155528C04DACBBA6F36F433035"
                #endif
            }
        };
        MobileAds.SetRequestConfiguration(requestConfiguration);

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus status) => 
        {
            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 (_bannerView != null)
        {
            _bannerView.Destroy();
        }

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

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

        // Register for ad events.
        _bannerView.OnBannerAdLoaded += OnBannerAdLoaded;
        _bannerView.OnBannerAdLoadFailed += OnBannerAdLoadFailed;

        AdRequest adRequest = new AdRequest();

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

    #region Banner callback handlers

    private void OnBannerAdLoaded(object sender, EventArgs args)
    {
        Debug.Log("Banner view loaded an ad with response : "
                 + _bannerView.GetResponseInfo());
        Debug.Log("Ad Height: {0}, width: {1}",
                _bannerView.GetHeightInPixels(),
                _bannerView.GetWidthInPixels());
    }

    private void OnBannerAdLoadFailed(LoadAdError error)
    {
        Debug.LogError("Banner view failed to load an ad with error : "
                + error);
    }

    #endregion
}

這裡的 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth 函式可用來取得橫幅廣告大小,藉此配合目前介面的固定位置。如要針對特定方向預先載入錨定橫幅廣告,請使用 AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidthAdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth 中的相關函式。