橫幅廣告

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

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

先決條件

完整的使用入門。您的 Unity 應用程序應該已經導入了 Google 移動廣告 Unity 插件。

創建一個橫幅視圖

朝向顯示橫幅的第一步是建立一個BannerView在附連到一個C#腳本對象GameObject

對於使用Unity編輯器更容易ADS整合功能,嘗試新的廣告展示位置測試版

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 -從其中的AdMob廣告單元ID BannerView應加載廣告。
  • AdSize -你想使用AdMob廣告大小(請參閱橫幅廣告尺寸的詳細信息)。
  • AdPosition -在橫幅廣告應放置位置。該AdPosition枚舉列出了有效的廣告位置值。

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

(可選)自定義廣告位置

對於在其中一個更大的控制BannerView被放置在屏幕上比什麼提供真實AdPosition值,使用BannerView具有x和y坐標參數的構造函數:

// 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被實例化後,下一步就是加載廣告。這與做loadAd()的方法BannerView類。它需要一個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事件包含特殊事件參數。它傳遞的實例HandleAdFailedToLoadEventArgsMessage描述錯誤:

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

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

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

清理橫幅廣告

如果你是一個完成BannerView ,請確保調用Destroy()下探您參考之前的方法:

bannerView.Destroy();

這會通知插件不再使用該對象,並且可以回收它佔用的內存。未能調用此方法會導致內存洩漏。

其他資源

樣品

成功的故事