錨定自動調整橫幅廣告

自動調整橫幅廣告是新一代的回應式廣告 根據裝置調整廣告大小,有效提升廣告成效。進一步改善智慧型橫幅廣告 僅支援固定高度,自動調整橫幅廣告則可讓您指定 並以此決定最合適的廣告大小。

為了選擇最佳廣告大小,自動調整橫幅廣告會採用固定的長寬比,而非 固定高度。這會導致橫幅廣告佔用比例更加一致 且能幫助他們提升廣告品質 才需進行

請注意,使用自動調整橫幅廣告時,一定會傳回 常數的大小。在網站上測試版面配置後 就能確保廣告大小不會改變不過, 橫幅廣告素材的尺寸可能因裝置而異。因此 建議您在版面配置中配合廣告高度的變化。在極少數情況下 可能無法填入完整自動調整大小,且系統會傳回標準大小的廣告素材 已改為在這個版位置中

先備知識

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

自動調整橫幅廣告的用途為直接取代這兩類廣告 標準 320x50 橫幅廣告大小以及取而代之智慧型橫幅廣告格式。

這些橫幅廣告大小經常被當做錨定橫幅廣告, 並固定在畫面的頂端或底部

就這類錨定橫幅廣告而言,採用自動調整橫幅廣告時的顯示比例會是 就像標準 320x50 廣告一樣 如下:


320x50 橫幅

自動調整橫幅廣告

智慧型橫幅廣告

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

  • 使用你提供的任何寬度,不會強制要求整個寬度 畫面,進而考量 iOS 上的安全區域以及螢幕凹口 。

  • 這個模式會選擇該裝置適用的最佳高度,而不是 讓不同尺寸的裝置保持固定高度,減緩 裝置結構化

實作注意事項

在應用程式中導入自動調整橫幅廣告時,請注意以下幾點:

  • 您必須知道廣告擺放的檢視畫面寬度 考量裝置寬度和任何安全區域 建議採用的剪接方式
  • 確保廣告檢視畫面背景不透明,以符合相關規定 AdMob 政策 (適用於較小的廣告大小) 未填滿廣告版位。
  • 確認您使用的是最新版的 Google 行動廣告 Unity 外掛程式。如果是中介服務,請使用每個中介服務轉接程式的最新版本。
  • 自動調整橫幅廣告大小經過精心設計,最適合使用 可用的寬度。在大多數情況下,這會是 使用中的裝置。請務必考量適用的安全區域。
  • Google Mobile Ads SDK 會根據最佳化的廣告高度調整橫幅廣告大小 自動調整大小
  • 有三種方法可以取得自動調整的廣告大小: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth 代表橫向, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth 代表直向,以及 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth: 所需時間
  • 針對特定裝置傳回的指定寬度大小一律為 因此在特定裝置上測試版面配置後 請確保廣告大小不會改變
  • 錨定橫幅廣告高度絕不會超過 裝置高度或 90 像素密度獨立像素,且絕不會小於 50 各個像素密度獨立像素
  • 如果是全寬橫幅廣告,您可以使用 AdSize.FullWidth 旗標,而不是 提供特定寬度

快速入門導覽課程

導入簡易自動調整錨定橫幅廣告的步驟如下:

  1. 取得自動調整橫幅廣告尺寸。您取得的尺寸會用於 自動調整橫幅廣告如要取得自動調整廣告尺寸,請務必完成下列操作:
    1. 取得所用裝置的寬度 (以密度獨立像素為單位),或 不要使用畫面的完整寬度。 Screen.width 等 Unity API 會傳回絕對像素,因此您必須 除以裝置規模 (可從 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/ad-manager/mobile-ads-sdk/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.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth」的相關函式 和 AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth