錨定自動調整橫幅廣告

自動調整橫幅廣告是新一代的回應式廣告,能配合裝置調整大小來提升成效。有別於僅支援固定高度的智慧型橫幅廣告,自動調整橫幅廣告可讓您指定廣告寬度,以此決定理想的廣告大小。

為了選擇最適合的廣告大小,自動調整式橫幅廣告採用固定顯示比例,而非固定高度,因此在不同裝置和螢幕大小上顯示橫幅廣告時,所占版面比例會更加一致,有助提升成效。

請注意,對於相同的裝置和寬度設定,自動調整橫幅廣告一律會傳回固定大小的廣告。因此當您在特定裝置上測試過版面配置後,便可確定廣告大小不會再變動。不過,橫幅廣告素材的大小可能會依裝置而異。因此,建議您採用能配合不同廣告高度的版面配置。儘管非常少見,但如果廣告素材無法填滿自動調整式橫幅廣告版位,系統會改為置中顯示標準大小的廣告素材。

先決條件

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

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

這些尺寸通常用來做為錨定橫幅廣告,並固定顯示在畫面頂端或底部。

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


320x50 橫幅廣告

自動調整橫幅廣告

智慧型橫幅廣告

自動調整橫幅廣告不僅能更有效運用可用螢幕空間,並且與智慧型橫幅廣告相比,還具有以下優勢:

  • 可設定任何寬度,而非強制採用全螢幕寬度,因此能在 iOS 裝置上保留安全區域,以及避開 Android 裝置的螢幕凹口。

  • 根據裝置選擇最佳高度,而不是在所有裝置上採用固定高度,減輕不同裝置尺寸造成的影響。

導入注意事項

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

  • 您必須知道廣告所在檢視區塊的寬度,且計算時應考量裝置寬度,並注意保留安全區域或避開螢幕凹口
  • 務必採用不透明的廣告檢視區塊背景,避免因廣告尺寸不足以填滿版位而違反 AdMob 政策。
  • 確認所用的 Google Mobile Ads Unity 外掛程式為最新版本。如果使用中介服務,請確保所有中介服務轉接程式均為最新版本。
  • 自動調整橫幅廣告在採用最大可用寬度時效果最佳,這通常是指裝置螢幕的全寬。請務必考慮到需保留的安全區域。
  • 使用自動調整型 AdSize API 時,Google Mobile Ads SDK 會依給定寬度選擇最合適的橫幅廣告高度。
  • 取得自動調整廣告尺寸的方法有以下三種:AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth (用於橫向螢幕)、AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth (用於直向螢幕),以及 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth (用於執行操作時的螢幕方向)。
  • 在同一裝置上採用相同寬度設定時,系統一律會傳回固定大小的廣告,因此當您在特定裝置上測試過版面配置後,便可確定廣告大小不會再變動。
  • 錨定橫幅廣告的高度上限為裝置高度的 15%,或是 90 個密度獨立像素 (以較小者為準),下限則為 50 個密度獨立像素。
  • 如要投放全寬橫幅廣告,您可以改用 AdSize.FullWidth 標記,而非提供具體寬度。

快速入門

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

  1. 取得自動調整橫幅廣告尺寸,用於請求該類廣告。如要取得尺寸,請確實完成下列操作:
    1. 取得目前裝置的寬度 (以密度獨立像素計算);如果不想使用螢幕全寬,也可以自行設定寬度。 由於 Screen.width 等 Unity API 會傳回絕對像素值,因此您必須將該值除以裝置縮放比例 (可透過 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 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.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidthAdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth 的相關函式。