橫幅廣告

橫幅廣告是佔據屏幕位置的矩形圖像或文字廣告。當用戶與應用程序交互時,它們會停留在屏幕上,並且可以在一段時間後自動刷新。如果您不熟悉移動廣告,那麼它們是一個很好的起點。案例研究

本指南向您展示如何將 AdMob 中的橫幅廣告集成到 Unity 應用程序中。除了代碼片段和說明之外,它還包括有關正確調整橫幅大小的信息以及指向其他資源的鏈接。

先決條件

完成入門。您的 Unity 應用應該已經導入了 Google Mobile Ads Unity 插件。

創建一個橫幅視圖

顯示橫幅的第一步是在附加到GameObject的 C# 腳本中創建BannerView對象。

要使用 Unity 編輯器更輕鬆地集成廣告,請嘗試新的Ad Placements Beta

using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    ...
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(initStatus => { });

        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
    }
}

BannerView的構造函數具有以下參數:

  • adUnitId - BannerView應從中加載廣告的 AdMob 廣告單元 ID。
  • AdSize - 您想使用的 AdMob 廣告尺寸(詳情請參閱橫幅尺寸)。
  • AdPosition - 應放置橫幅廣告的位置。 AdPosition枚舉列出了有效的廣告排名值。

重要的是要注意如何使用不同的廣告單元,具體取決於平台。您需要使用 iOS 廣告單元在 iOS 上發出廣告請求,並使用 Android 廣告單元在 Android 上發出請求。

(可選)自定義廣告位置

為了更好地控制BannerView在屏幕上的放置位置,而不是AdPosition值提供的位置,請使用以 x 和 y 坐標作為參數的BannerView構造函數:

// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);

BannerView的左上角將定位在傳遞給構造函數的 x 和 y 值處,其中原點是屏幕的左上角。

(可選)自定義廣告尺寸

除了使用 AdSize 常量外,您還可以為廣告指定自定義尺寸:

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

始終使用測試廣告進行測試

上面的示例代碼包含一個廣告單元 ID,您可以使用它隨意請求廣告。它經過特殊配置,可以針對每個請求返回測試廣告而不是生產廣告,這使得它可以安全使用。

但是,一旦您在 AdMob 用戶界面中註冊了一個應用並創建了您自己的廣告單元 ID 以在您的應用中使用,您就需要在開發時將您的設備明確配置為測試設備。這是極其重要的。使用真實廣告進行測試(即使您從未點擊它們)違反 AdMob 政策,並可能導致您的帳戶被暫停。閱讀測試廣告,了解如何確保在開發時始終收到測試廣告。

加載廣告

一旦BannerView被實例化,下一步就是加載廣告。這是通過BannerView類中的loadAd()方法完成的。它接受一個AdRequest參數,該參數保存有關單個廣告請求的運行時信息(例如定位信息)。

下面是一個展示如何加載廣告的示例:

...
    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
...

而已!您的應用現在已準備好展示來自 AdMob 的橫幅廣告。

廣告事件

要進一步自定義廣告的行為,您可以掛鉤廣告生命週期中的許多事件:加載、打開、關閉等。通過為適當的EventHandler註冊一個委託來監聽這些事件,如下所示。

...
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
        // Called when an ad request failed to load.
        this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        this.bannerView.OnAdOpening += this.HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        this.bannerView.OnAdClosed += this.HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }

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

    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                            + args.Message);
    }

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

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

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

OnAdFailedToLoad事件包含特殊的事件參數。它傳遞一個HandleAdFailedToLoadEventArgs實例,並帶有描述錯誤的Message

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  MonoBehaviour.print("Banner failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
廣告活動描述
OnAdLoaded OnAdLoaded事件在廣告加載完成時執行。
OnAdFailedToLoad當廣告加載失敗時調用OnAdFailedToLoad事件。 Message參數描述發生的故障類型。
OnAdOpening當用戶點擊廣告時調用此方法。如果您使用分析包來跟踪點擊,這是一個記錄點擊的好地方。
OnAdClosed當用戶在查看廣告的目標 URL 後返回應用程序時,將調用此方法。您的應用程序可以使用它來恢復暫停的活動或執行任何其他必要的工作以使其為交互做好準備。
OnAdLeavingApplication此方法在onAdOpened之後調用,當用戶單擊打開另一個應用程序(例如 Google Play 商店)時,將當前應用程序置於後台。

下表列出了標準橫幅尺寸。

以 dp 為單位的尺寸 (WxH)描述可用性AdSize 常數
320x50標準橫幅手機和平板電腦BANNER
320x100大橫幅手機和平板電腦LARGE_BANNER
300x250 IAB 中矩形手機和平板電腦MEDIUM_RECTANGLE
468x60 IAB 全尺寸橫幅平板電腦FULL_BANNER
728x90 IAB 排行榜平板電腦LEADERBOARD
提供的寬度x自適應高度自適應橫幅手機和平板電腦不適用
屏幕寬度x 32|50|90智能橫幅手機和平板電腦SMART_BANNER
了解有關旨在取代智能橫幅自適應橫幅的更多信息。

清理橫幅廣告

完成BannerView後,請確保在刪除對它的引用之前調用Destroy()方法:

bannerView.Destroy();

這通知插件該對像不再被使用並且它所佔用的內存可以被回收。調用此方法失敗會導致內存洩漏。

其他資源

樣品

成功的故事