原生廣告
原生廣告是通過平臺(tái)原本就有的界面組件向用戶呈現(xiàn)的廣告素材資源。這種廣告使用您在構(gòu)建布局時(shí)已經(jīng)采用的同類視圖進(jìn)行展示,而且能以和周圍視覺設(shè)計(jì)相稱的形式呈現(xiàn),讓用戶有渾然一體的使用體驗(yàn)。具體到代碼編寫層面,這意味著當(dāng)原生廣告加載時(shí),您的應(yīng)用會(huì)收到一個(gè)包含其素材資源的NativeAd對象,然后就由此應(yīng)用(而不是Google移動(dòng)廣告SDK)負(fù)責(zé)展示它們了。
總的來說,要想成功植入原生廣告,需要完成兩部分工作:一是通過SDK加載廣告,二是在您的應(yīng)用中展示廣告內(nèi)容。本頁將介紹如何使用SDK加載原生廣告。
前提條件
·導(dǎo)入Google移動(dòng)廣告SDK(可以只導(dǎo)入其自身,也可以將其作為Firebase的一部分加以導(dǎo)入)。
加載廣告
原生廣告通過AdLoader類加載,該類有自己的Builder類,可在廣告創(chuàng)建過程中對廣告進(jìn)行自定義。應(yīng)用在構(gòu)建AdLoader的過程中會(huì)向其添加監(jiān)聽器,以指定它準(zhǔn)備接收哪些類型的原生廣告。這樣,AdLoader就會(huì)只請求這些類型的廣告。
構(gòu)建AdLoader
注意:請?jiān)谥骶€程中進(jìn)行對移動(dòng)廣告SDK的所有調(diào)用。
以下代碼演示了如何構(gòu)建可加載統(tǒng)一原生廣告的AdLoader:
警告:盡量不要使用onAdFailedToLoad()方法加載新廣告。如果實(shí)在是必須使用onAdFailedToLoad()加載廣告,請限制廣告加載的重試次數(shù),以免在網(wǎng)絡(luò)連接受限等情況下連續(xù)出現(xiàn)廣告請求失敗。
為UnifiedNativeAd格式做準(zhǔn)備
上例中首先調(diào)用的方法負(fù)責(zé)為UnifiedNativeAd格式準(zhǔn)備AdLoader:
forUnifiedNativeAd()
調(diào)用此方法會(huì)將AdLoader配置為請求統(tǒng)一原生廣告。當(dāng)廣告成功加載后,會(huì)調(diào)用監(jiān)聽器對象的onUnifiedNativeAdLoaded()方法。
AdLoader發(fā)出廣告請求后,Google會(huì)選擇能使發(fā)布商收益最大化的廣告,然后將該廣告返回。
將AdListener與AdLoader配合使用
在創(chuàng)建上述AdLoader的過程中,withAdListener函數(shù)會(huì)設(shè)置一個(gè)AdListener。
這是一個(gè)可選步驟。該方法將AdListener作為其唯一參數(shù),當(dāng)廣告生命周期事件發(fā)生時(shí),此參數(shù)會(huì)收到來自AdLoader的回調(diào):
AdListener對象處理原生廣告的方式與處理橫幅廣告和插頁式廣告的方式有一個(gè)非常重要的區(qū)別。由于AdLoader本身就擁有因具體格式而異的監(jiān)聽器(即UnifiedNativeAd.OnUnifiedNativeAdLoadedListener),可在加載廣告時(shí)使用,因此當(dāng)原生廣告成功加載時(shí),并不會(huì)調(diào)用AdListener中的onAdLoaded()方法。
加載廣告
構(gòu)建完AdLoader后,就可以使用它來加載廣告了。用于加載廣告的方法有兩個(gè):loadAd()和loadAds()。
注意:loadAds()方法目前僅適用于AdMob廣告。對于參與中介的廣告,請改為使用loadAd()。
loadAd()方法針對單個(gè)廣告發(fā)送請求:
loadAd()
此方法針對單個(gè)廣告發(fā)送請求。
loadAds()方法針對多個(gè)廣告(最多5個(gè))發(fā)送請求:
這兩個(gè)方法都將AdRequest對象作為第一個(gè)參數(shù)。這同樣是橫幅廣告和插頁式廣告所使用的AdRequest類,您可以使用AdRequest類的方法添加定位信息,這一點(diǎn)與其他廣告格式一樣。
loadAds()還需要另外一個(gè)參數(shù),即SDK應(yīng)為該請求嘗試加載的廣告數(shù)量。此數(shù)量的上限為5個(gè),而且無法保證SDK返回的廣告數(shù)量一定等于所請求的廣告數(shù)量。如果調(diào)用loadAds()后返回了多個(gè)廣告,則這些廣告將互不相同。
調(diào)用loadAd()后,將對上面定義的監(jiān)聽器方法進(jìn)行一次回調(diào),以投放原生廣告對象或報(bào)告錯(cuò)誤。
調(diào)用loadAds()后,將進(jìn)行多次此類回調(diào)(至少一次,但不超過請求的廣告數(shù)量)。對于請求多個(gè)廣告的應(yīng)用,應(yīng)在其回調(diào)實(shí)現(xiàn)代碼中調(diào)用AdLoader.isLoading(),以確定是否已完成加載過程。
下例展示了如何在onUnifiedNativeAdLoaded()回調(diào)中檢查isLoading():
注意:重復(fù)使用AdLoader時(shí),請確保先等待每個(gè)請求完成,然后再重新調(diào)用loadAd()或loadAds()。
務(wù)必用測試廣告進(jìn)行測試
在構(gòu)建和測試應(yīng)用時(shí),請確保使用的是測試廣告,而不是實(shí)際投放的廣告。否則,可能會(huì)導(dǎo)致您的帳號被暫停。
對于在Android上投放的原生高級廣告,加載測試廣告最簡便的方法就是使用下面的測試專用廣告單元ID:
ca-app-pub-3940256099942544/2247696110
該測試廣告單元ID已經(jīng)過專門配置,可確保每個(gè)請求返回的都是測試廣告。您可以在自己應(yīng)用的編碼、測試和調(diào)試過程中隨意使用該測試廣告單元ID。只是一定要在發(fā)布應(yīng)用前用您自己的廣告單元ID替換該測試廣告單元ID。
何時(shí)請求廣告
展示原生廣告的應(yīng)用完全可以在實(shí)際展示廣告之前先行請求這些廣告。在許多情況下,推薦采取這種做法。例如,如果某款應(yīng)用展示一個(gè)商品清單,其中會(huì)夾雜一些原生廣告,那么該應(yīng)用就可以加載整個(gè)清單中的原生廣告,因?yàn)樗酪恍V告僅在用戶滾動(dòng)瀏覽視圖后才會(huì)展示,還有一些可能根本不會(huì)展示。
注意:盡管預(yù)先提取廣告是很好的做法,但發(fā)布商切勿過久保留舊廣告而不展示它們。對任何廣告對象來說,如果在保留一小時(shí)后仍沒有獲得展示,就應(yīng)該予以舍棄,并替換為來自新請求的新廣告。
展示UnifiedNativeAd
加載廣告后,剩下的工作就是將其展示給您的用戶。