本指南將說明如何使用原生廣告外掛程式,在 Unity 應用程式中實作原生廣告,以及在過程中應考量的幾項重要事項。
原生廣告的格式及功能可融入使用者體驗 他們就定位了我們的產品外觀也更貼近所在應用程式的視覺設計。 Ad Manager 的原生廣告格式可讓發布商 內容完美搭配您可以利用這項技術 能充分運用 Unity 應用程式中的原生程式碼。
原生廣告顯示時使用的GameObjects
類型,與您
而且這些格式已經過調整,
實際體驗載入原生廣告時,您的應用程式
接收包含其資產和 Unity 應用程式的原生物件
SDK 後,就會顯示這些資訊
必要條件
載入原生廣告格式
原生廣告是透過 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 廣告素材資源也必須清晰易讀,所以選擇 適當的背景色彩和圖片
為廣告素材資源註冊 GameObject
您必須註冊 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;
}