插頁式廣告

插頁式廣告是覆蓋其宿主應用程序界面的全屏廣告。它們通常顯示在應用程序流程中的自然過渡點,例如在遊戲關卡之間的暫停期間。當應用程序顯示插頁式廣告時,用戶可以選擇點擊廣告並繼續到達目的地,或者關閉它並返回應用程序。案例研究

本指南介紹瞭如何將插頁式廣告集成到 Unity 應用程序中。

先決條件

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

製作插頁式廣告

朝向顯示插頁的第一步是建立一個InterstitialAd在附連到一個腳本對象GameObject

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

using GoogleMobileAds.Api;
...

private InterstitialAd interstitial;

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

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
}

對於構造InterstitialAd具有以下參數:

  • adUnitId -從其中的AdMob廣告單元ID InterstitialAd應加載廣告。

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

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

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

但是,一旦你註冊在AdMob界面的應用程序並創建自己的廣告單元ID在你的應用程序使用,你需要明確您的設備配置為測試設備,當你正在開發。這是極其重要的。使用真實廣告進行測試(即使您從未點擊它們)違反 AdMob 政策,可能會導致您的帳戶被暫停。請參見測試廣告的信息,你如何才能確保你進行開發時,總是得到測試廣告。

加載廣告

一旦InterstitialAd實例化,下一步就是加載廣告。這與做loadAd()的方法InterstitialAd類。它需要一個AdRequest參數,它保存關於一個廣告請求運行時信息(作為靶向信息這樣)。

下面的示例展示瞭如何加載廣告:

using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;

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

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.LoadAd(request);
}

展示廣告

插頁式廣告應在應用程序流程的自然停頓期間展示。在遊戲的關卡之間,或者在用戶完成任務之後就是一個很好的例子。為了展示插頁式廣告,使用isLoaded()方法來驗證,它的完成加載,然後調用show()

前面代碼示例中的插頁式廣告可以在遊戲結束時顯示,如下所示。

private void GameOver()
{
  if (this.interstitial.IsLoaded()) {
    this.interstitial.Show();
  }
}

廣告活動

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

using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;

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

     // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);

    // Called when an ad request has successfully loaded.
    this.interstitial.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request failed to load.
    this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Called when an ad is shown.
    this.interstitial.OnAdOpening += HandleOnAdOpened;
    // Called when the ad is closed.
    this.interstitial.OnAdClosed += HandleOnAdClosed;
    // Called when the ad click caused the user to leave the application.
    this.interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication;

    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.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)
{
    print("Interstitial failed to load: " + args.Message);
    // Handle the ad failed to load event.
}
廣告活動描述
OnAdLoadedOnAdLoaded在廣告加載完成後執行事件。
OnAdFailedToLoadOnAdFailedToLoad當廣告加載失敗時被調用的事件。該Message參數描述發生故障的類型。
OnAdOpening當廣告顯示覆蓋設備屏幕時調用此方法。
OnAdClosed當由於用戶點擊關閉圖標或使用後退按鈕而關閉插頁式廣告時,將調用此方法。如果您的應用暫停其音頻輸出或遊戲循環,這是恢復它的好地方。
OnAdLeavingApplication此方法後調用OnAdOpened ,當用戶點擊打開另一個應用程序(如谷歌Play商店),backgrounding當前的應用程序。

清理插頁式廣告

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

interstitial.Destroy();

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

一些最佳實踐

考慮插頁式廣告是否適合您的應用。
插頁式廣告在具有自然過渡點的應用中效果最佳。應用程序中任務的結束,例如共享圖像或完成遊戲關卡,會產生這樣的點。由於用戶期望操作中斷,因此很容易展示插頁式廣告而不會中斷他們的體驗。請務必考慮在應用工作流程中的哪些點展示插頁式廣告以及用戶可能會如何響應。
請記住在顯示插頁式廣告時暫停操作。
有多種不同類型的插頁式廣告:文字、圖片、視頻等。重要的是要確保當您的應用顯示插頁式廣告時,它還暫停使用某些資源以允許廣告利用它們。例如,當您調用以顯示插頁式廣告時,請務必暫停您的應用正在生成的任何音頻輸出。您可以繼續在播放聲音onAdClosed()事件處理程序,當用戶完成與廣告互動,將被調用。此外,考慮在顯示廣告時暫時停止任何密集的計算任務(例如游戲循環)。這將確保用戶不會遇到緩慢或無響應的圖形或斷斷續續的視頻。
留出足夠的加載時間。
正如確保在適當的時間展示插頁式廣告很重要一樣,確保用戶不必等待它們加載也很重要。通過調用加載的廣告預先loadAd()你打算調用之前show()可以確保您的應用程序有在準備一輛滿載插頁廣告在時機成熟時顯示一個。
不要用廣告淹沒用戶。
雖然增加應用中插頁式廣告的頻率似乎是增加收入的好方法,但它也會降低用戶體驗並降低點擊率。確保用戶不會過於頻繁地被打擾,以至於他們無法再享受使用您的應用程序的樂趣。

其他資源

樣品

成功的故事