開始使用
系統會透過平台原生 UI 元件,向使用者顯示原生重疊廣告。這類廣告會以疊加形式顯示在應用程式頂端。運作方式與橫幅廣告類似,但可自訂廣告外觀。
原生重疊廣告支援中介服務和影片廣告。這是原生重疊廣告相較於原生廣告的主要優勢。
本指南說明如何在 Unity 應用程式中導入原生重疊廣告,以及過程中需要注意的重要事項。
必備條件
- 完成入門指南的步驟。
- Unity 外掛程式 9.0.0 以上版本。
請務必使用測試廣告進行測試
下列程式碼範例包含廣告單元 ID,可用於要求測試廣告。這類 ID 經特別設定,可針對每項要求傳回測試廣告,而非實際廣告,因此可安心使用。
不過,在 AdMob 網頁介面中註冊應用程式,並建立要在應用程式中使用的廣告單元 ID 後,請在開發期間將裝置明確設為測試裝置。
Android
ca-app-pub-3940256099942544/2247696110
iOS
ca-app-pub-3940256099942544/3986624511
載入原生重疊廣告
如要載入原生重疊廣告,請使用 NativeOverlayAd 類別的靜態 Load() 方法。載入的 NativeOverlayAd 物件會以參數形式,提供給完成處理常式。
下列程式碼會使用 NativeOverlayAd 載入廣告:
  // These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/2247696110";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/3986624511";
#else
  private string _adUnitId = "unused";
#endif
private NativeOverlayAd _nativeOverlayAd;
/// <summary>
/// Loads the ad.
/// </summary>
public void LoadAd()
{
    // Clean up the old ad before loading a new one.
    if (_nativeOverlayAd != null)
    {
        DestroyAd();
    }
    Debug.Log("Loading native overlay ad.");
    // Create a request used to load the ad.
    var adRequest = new AdRequest();
    // Optional: Define native ad options.
    var options = new NativeAdOptions
    {
        AdChoicesPosition = AdChoicesPlacement.TopRightCorner,
        MediaAspectRatio = NativeMediaAspectRatio.Any,
    };
    // Send the request to load the ad.
    NativeOverlayAd.Load(_adUnitId, adRequest, options,
        (NativeOverlayAd ad, LoadAdError error) =>
    {
        if (error != null)
        {
            Debug.LogError("Native Overlay ad failed to load an ad " +
                           " with error: " + error);
            return;
        }
        // The ad should always be non-null if the error is null, but
        // double-check to avoid a crash.
        if (ad == null)
        {
            Debug.LogError("Unexpected error: Native Overlay ad load event " +
                           " fired with null ad and null error.");
            return;
        }
        // The operation completed successfully.
        Debug.Log("Native Overlay ad loaded with response : " +
                   ad.GetResponseInfo());
        _nativeOverlayAd = ad;
        // Register to ad events to extend functionality.
        RegisterEventHandlers(ad);
    });
}
顯示及設定原生重疊廣告樣式
系統會使用 NativeTemplateStyle 顯示原生重疊廣告。這個類別定義的欄位可讓您自訂廣告外觀。
TemplateID 是必要字串,用於定義顯示原生重疊廣告的原生範本。使用 NativeTemplateID 常數,選擇適合廣告的原生範本。
下列程式碼會使用中型範本和自訂樣式顯示原生重疊廣告。
/// <summary>
/// Renders the ad.
/// </summary>
public void RenderAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Rendering Native Overlay ad.");
        // Define a native template style with a custom style.
        var style = new NativeTemplateStyle
        {
            TemplateID = NativeTemplateID.Medium,
            MainBackgroundColor = Color.red,
            CallToActionText = new NativeTemplateTextStyles
            {
                BackgroundColor = Color.green,
                FontColor = Color.white,
                FontSize = 9,
                Style = NativeTemplateFontStyle.Bold
            }
        };
        // Renders a native overlay ad at the default size
        // and anchored to the bottom of the screne.
        _nativeOverlayAd.RenderTemplate(style, AdPosition.Bottom);
    }
}
顯示及隱藏原生重疊廣告
下列程式碼示範如何顯示已載入的原生重疊廣告。
/// <summary>
/// Shows the ad.
/// </summary>
public void ShowAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Showing Native Overlay ad.");
        _nativeOverlayAd.Show();
    }
}
隱藏原生重疊廣告
下列程式碼示範如何隱藏原生重疊廣告。
/// <summary>
/// Hides the ad.
/// </summary>
public void HideAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Hiding Native Overlay ad.");
        _nativeOverlayAd.Hide();
    }
}
刪除原生重疊廣告
原生重疊廣告使用完畢後,請務必呼叫 Destroy() 以釋出資源。
/// <summary>
/// Destroys the native overlay ad.
/// </summary>
public void DestroyAd()
{
    if (_nativeOverlayAd != null)
    {
        Debug.Log("Destroying native overlay ad.");
        _nativeOverlayAd.Destroy();
        _nativeOverlayAd = null;
    }
}