插頁式廣告會全螢幕顯示,覆蓋整個應用程式的介面。這類廣告通常會在應用程式流程中的自然轉換點顯示,例如在遊戲關卡之間的暫停時間。應用程式顯示插頁式廣告時,使用者可選擇輕觸廣告前往到達網頁,或關閉廣告並返回應用程式。個案研究。
本指南說明如何將插頁式廣告整合至 Unity 應用程式中。
必要條件
- 完成入門指南。
建立插頁式廣告
顯示插頁式廣告的第一步,是在附加至 GameObject
的指令碼中建立 InterstitialAd
物件。
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
-InterstitialAd
應從中載入廣告的 AdMob 廣告單元 ID。
視平台而定,請務必留意不同廣告單元的使用方式。您必須使用 iOS 廣告單元在 iOS 上提出廣告請求,在 Android 上提出廣告請求時,則需使用 Android 廣告單元。
一律使用測試廣告進行測試
上述範例程式碼包含廣告單元 ID,您可以使用這個 ID 請求廣告。容器經過特別設定,不會針對每個請求傳回測試廣告,而不是實際製作廣告,因此使用起來很安全。
不過,一旦您在 AdMob UI 中註冊應用程式,並建立自己的廣告單元 ID 以便在應用程式中使用,就必須在開發時明確將裝置設定為測試裝置。這點非常重要。使用實際廣告進行測試 (即使您從未輕觸) 是違反 AdMob 政策的行為,我們可能會將您的帳戶停權。請參閱「測試廣告」,瞭解如何確保開發時隨時都能取得測試廣告。
載入廣告
將 InterstitialAd
例項化後,下一步就是載入廣告。方法是使用 InterstitialAd
類別中的 loadAd()
方法。這個方法需要 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 += HandleOnAdOpening; // Called when the ad is closed. this.interstitial.OnAdClosed += HandleOnAdClosed; // 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 HandleOnAdOpening(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpening event received"); } public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); }
OnAdFailedToLoad
事件包含特殊事件引數。它會傳遞一個 HandleAdFailedToLoadEventArgs
執行個體,其中包含描述錯誤的 Message
:
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
print("Interstitial failed to load: " + args.Message);
// Handle the ad failed to load event.
}
廣告事件 | 說明 |
---|---|
OnAdLoaded |
廣告載入完畢後,就會執行 OnAdLoaded 事件。 |
OnAdFailedToLoad |
廣告無法載入時,系統會叫用 OnAdFailedToLoad 事件。Message 參數會說明發生的失敗類型。 |
OnAdOpening |
廣告顯示並覆蓋裝置螢幕時,就會叫用這個方法。 |
OnAdClosed |
使用者輕觸關閉圖示或使用返回按鈕關閉插頁式廣告時,系統就會叫用此方法。如果您的應用程式已暫停音訊輸出或遊戲迴圈,建議您在這個位置恢復播放。 |
清除插頁式廣告
使用 InterstitialAd
後,請務必先呼叫 Destroy()
方法,再放置參照:
interstitial.Destroy();
這會通知外掛程式,該物件已無法使用,且可收回物件佔用的記憶體。如未呼叫此方法,可能造成記憶體流失。
一些最佳做法
- 請思考插頁式廣告是否為適合您應用程式的廣告類型。
- 插頁式廣告最適合用於包含自然轉換點的應用程式。 應用程式內的工作結束時 (例如分享圖片或完成遊戲關卡),即會建立這類時間點。由於使用者期望在操作過程中休息一下,因此可輕鬆放送插頁式廣告,避免干擾他們體驗。請務必考慮在應用程式工作流程中的哪個時間點顯示插頁式廣告,以及使用者可能回應的情況。
- 請記得在顯示插頁式廣告時暫停動作。
- 插頁式廣告有多種類型:文字、圖像、影片等。請務必確保應用程式顯示插頁式廣告時,一併暫停使用部分資源,廣告才能利用資源。舉例來說,當您呼叫顯示插頁式廣告時,請務必暫停應用程式產生的任何音訊輸出。您可以在
onAdClosed()
事件處理常式中繼續播放音訊,當使用者完成與廣告互動時就會叫用該處理常式。此外,在廣告顯示期間,請考慮暫停執行密集的運算工作 (例如遊戲迴圈)。這樣可以確保使用者不會體驗過慢/沒有回應的圖像,或影片播放不流暢。 - 允許充分的載入時間。
- 確保在適當時機顯示插頁式廣告非常重要,而您也應該確保使用者不必等待廣告載入。在預期呼叫
show()
之前呼叫loadAd()
即可事先載入廣告,可確保應用程式在顯示時已有完全載入的插頁式廣告。 - 不要讓應用程式廣告氾濫。
- 增加在應用程式中顯示插頁式廣告的頻率也許是提升收益的好方法,但也有可能導致使用者體驗和點閱率下降。請確保使用者不會經常中斷,以免他們無法再使用您的應用程式。
其他資源
範例
- HelloWorld 範例 所有廣告格式的導入基本度