開始使用

本指南將說明如何使用原生廣告外掛程式導入原生廣告 以及過程中需要考量的一些重要事項。

原生廣告的格式及功能可融入使用者體驗 他們就定位了我們的產品外觀也更貼近所在應用程式的視覺設計。 Ad Manager 的原生廣告格式可讓發布商 內容完美搭配您可以利用這項技術 能充分運用 Unity 應用程式中的原生程式碼。

原生廣告顯示時使用的GameObjects類型,與您 而且這些格式已經過調整, 實際體驗載入原生廣告時,您的應用程式 接收包含其資產和 Unity 應用程式的原生物件 SDK 後,就會顯示這些資訊

必要條件

  • Google 行動廣告 Unity 外掛程式 7.0.0 以上版本。
  • 完成入門指南
  • 下載 並安裝原生廣告外掛程式

載入原生廣告格式

原生廣告是透過 AdLoader 類別載入,這個類別有自己的 AdLoader.Builder 類別,可在建立期間自訂。ForNativeAd() 方法會設定 AdLoader 處理原生廣告。

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

註冊 AdLoader 廣告事件

如要在原生廣告成功載入或無法載入時收到通知,請新增 為下列事件委派給 AdLoader 類別。

OnNativeAdLoaded

在成功載入原生廣告時叫用。您必須具備 來存取載入的廣告。

OnAdFailedToLoad

在原生廣告無法載入時叫用。

載入廣告

完成建構 AdLoader 後,請呼叫其 LoadAd() 方法, 請求廣告:

adLoader.LoadAd(new AdRequest.Builder().Build());

將廣告請求放在一起

下列程式碼片段說明如何建構的 AdLoader 設定為請求原生廣告;為成功和失敗的廣告設定委派代表 並發出廣告請求

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
    adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
    adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

處理失敗的廣告載入

OnAdFailedToLoad 事件的類型為 EventHandle<AdFailedToLoadEventArgs>。 下方顯示剖析這個事件中廣告載入失敗的原因。

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

顯示原生廣告

載入原生廣告時,系統會叫用對應廣告格式的廣告事件。 這樣一來,您的應用程式就必須負責顯示廣告, 不必立即處理

處理廣告載入量

OnNativeAdLoaded 事件的類型為 EventHandler<NativeAdEventArgs>。 封裝在 NativeAd 物件中,可從 NativeAdEventArgs,如下所示:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

擷取原生廣告素材資源

廣告載入完畢後,您可以按照下列步驟存取其素材資源。圖形 資產會傳回 Texture2D 物件,文字素材資源則會傳回 string 物件。

private bool nativeAdLoaded;
private NativeAd nativeAd;

void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for the icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}

請注意,廣告素材資源僅供主執行緒存取,舉例來說, 來自 Unity 指令碼的 Update() 方法。同時,請注意下列素材資源 不一定會顯示,而且在 顯示:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

AdChoices 素材資源

這是原生廣告中必須顯示 AdChoices 廣告素材資源的規定。 另外,AdChoices 廣告素材資源也必須清晰易讀,所以選擇 適當的背景色彩和圖片

註冊 GameObjects 以提供廣告素材資源

您必須註冊 GameObject,廣告素材資源才能在 Unity 應用程式。如果註冊成功,用來註冊 GameObject 會傳回 bool。如果是 List<GameObject>,這個方法會傳回 int 表示已成功註冊的 GameObject 份數。

如果廣告素材資源註冊失敗,系統會在 就無法辨識相應的原生廣告

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

註冊廣告素材資源的 GameObject 必須含有對話式對帳器 代表 GameObject 大小和形狀的元件。如果 註冊至廣告素材資源的 GameObject 個物件缺少 Collider 個元件 或者如果設定不正確,原生廣告將無法正常運作。

在下列程式碼片段中,BoxCollider 已新增至 GameObject,且該範本會使用 TextMesh,以便顯示原生廣告的廣告標題廣告素材資源。產生 BoxCollider 已附加至 GameObject,系統會自動調整為 納入 TextMesh 元件的文字。

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

示範

下列程式碼示範如何擷取成功的圖示素材資源 已載入原生廣告,設定 Quad 的紋理來顯示圖示廣告素材資源。 並註冊用於顯示資產的 GameObject。這項程序 擷取廣告素材資源並註冊原生廣告類別後,應該也能 重複上述步驟。

private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}