Google AdMob原生高級廣告

來源: Google Developers
作者:Google Developers
時間:2021-02-19
18346
加載原生廣告時,Google移動廣告SDK會調(diào)用相應(yīng)廣告格式的監(jiān)聽器。然后,就由您的應(yīng)用負(fù)責(zé)展示廣告了,盡管不一定要立即展示廣告。為了更輕松地展示系統(tǒng)定義的廣告格式,該SDK提供了一些實用資源,如下所述。

原生高級廣告

展示UnifiedNativeAd

加載原生廣告時,Google移動廣告SDK會調(diào)用相應(yīng)廣告格式的監(jiān)聽器。然后,就由您的應(yīng)用負(fù)責(zé)展示廣告了,盡管不一定要立即展示廣告。為了更輕松地展示系統(tǒng)定義的廣告格式,該SDK提供了一些實用資源,如下所述。

UnifiedNativeAdView類

對于UnifiedNativeAd格式,有對應(yīng)的UnifiedNativeAdView類。該類是一個ViewGroup,發(fā)布商應(yīng)將其用作UnifiedNativeAd的根。一個UnifiedNativeAdView對應(yīng)于一個統(tǒng)一原生廣告。凡是用于展示該廣告素材資源的視圖(例如,展示屏幕截圖素材資源的ImageView),均應(yīng)是UnifiedNativeAdView對象的子對象。

對于使用LinearLayout展示素材資源視圖的統(tǒng)一原生廣告,其視圖層次結(jié)構(gòu)可能如下所示:

1613720828(1).png

下面這個示例創(chuàng)建了一個UnifiedNativeAdView,然后用UnifiedNativeAd填充該視圖:

1613720908(1).png

1613720932(1).png

重要注意事項:請注意,對于指定的原生廣告,應(yīng)在UnifiedNativeAdView布局內(nèi)呈現(xiàn)所有素材資源。當(dāng)在原生廣告視圖布局外呈現(xiàn)原生廣告素材資源時,Google移動廣告SDK就會在日志中記錄一條警告。

廣告視圖類還提供了注冊每項素材資源所用視圖時會用到的方法,并提供了一個用于注冊NativeAd對象本身的方法。如果以這種方式注冊視圖,該SDK就可以自動處理諸如以下任務(wù):

·記錄點擊次數(shù)

·記錄展示次數(shù)(當(dāng)?shù)谝粋€像素出現(xiàn)在屏幕上時)

·顯示廣告選擇疊加層

廣告選擇疊加層

該SDK會向每個廣告視圖中添加一個廣告選擇疊加層。請在原生廣告視圖中任選您喜歡的一角留出空間,用于展示自動插入的廣告選擇徽標(biāo)。此外,廣告選擇疊加層一定要顯眼易見,因此請選擇適當(dāng)?shù)谋尘邦伾蛨D片。

廣告標(biāo)示

您必須展示廣告標(biāo)示,以指明該視圖是廣告。

代碼示例

以下是展示統(tǒng)一原生廣告的步驟:

創(chuàng)建UnifiedNativeAdView類的實例。

對于要展示的每個廣告素材資源:

使用廣告對象中的素材資源填充素材資源視圖。

向ViewGroup類注冊該素材資源視圖。

如果您的原生廣告布局包含大型媒體素材資源,請注冊MediaView。

向ViewGroup類注冊廣告對象。

以下是一個展示UnifiedNativeAd的示例函數(shù):

1613721057(1).png

1613721092(1).png

讓我們來看看各項具體任務(wù):

填充布局

1613721113(1).png

1613721180(1).png

在本示例中,我們要填充一個XML布局(該布局包含的視圖用于展示統(tǒng)一原生廣告),然后找到對UnifiedNativeAdView的引用。請注意,如果您的片段或活動中有現(xiàn)成的UnifiedNativeAdView,也可以重復(fù)使用它;您甚至可以在不使用布局文件的情況下動態(tài)創(chuàng)建一個實例。

填充和注冊素材資源視圖

下面的示例代碼會找到用于顯示標(biāo)題的視圖,使用廣告對象所提供的字符串素材資源設(shè)置視圖的文字,然后向UnifiedNativeAdView對象注冊該視圖:

1613721209(1).png

1613721231(1).png

對于應(yīng)用要展示的由原生廣告對象所提供的每項素材資源,都應(yīng)為其重復(fù)上述過程,即找到相應(yīng)視圖、設(shè)置其值并向廣告視圖類注冊它。

點擊處理

重要注意事項:在原生廣告視圖之上或內(nèi)部的任何視圖上,請勿實現(xiàn)任何自定義點擊處理程序。要自行觀察點擊事件,請使用廣告監(jiān)聽器。

只要您按上一部分所述正確填充和注冊了素材資源視圖,該SDK就會處理廣告視圖素材資源獲得的點擊。

以下是一個使用廣告監(jiān)聽器觀察點擊事件的示例:

1613721258(1).png

1613721283(1).png

注冊MediaView

重要注意事項:如果您要在原生廣告的布局中包含主圖片素材資源,則需要使用MediaView素材資源,而不是ImageView素材資源。

MediaView是一個專門用于展示主媒體素材資源(視頻或圖片)的View。

MediaView可以在XML布局中定義,也可以動態(tài)構(gòu)建。就像所有其他素材資源視圖一樣,它應(yīng)該放在NativeAdView的視圖層次結(jié)構(gòu)中。對于使用MediaView的應(yīng)用,必須向NativeAdView注冊它,如下所示:

1613721325(1).png

1613721345(1).png

與所有素材資源視圖一樣,媒體視圖也需要填充內(nèi)容,這通過使用mediaContent屬性來完成。UnifiedNativeAd的mediaContent屬性包含可傳遞到MediaView的媒體內(nèi)容。

以下代碼段用于為媒體視圖設(shè)置媒體內(nèi)容:

1613721367(1).png

1613721421(1).png

設(shè)置ImageScaleType

MediaView類在顯示圖片時具有ImageScaleType屬性。如果您想在MediaView中更改圖片的縮放方式,請使用MediaView的setImageScaleType()方法設(shè)置相應(yīng)的ImageView.ScaleType。

例如,要在圖片顯示時填充MediaView(廣告中不包含視頻),請使用以下代碼:

1613721442(1).png

1613721469(1).png

GitHub示例

我們的GitHub代碼庫包含以Java和Kotlin編寫的原生高級廣告的完整實現(xiàn)方案。

下載原生高級廣告示例

MediaContent

MediaContent類包含與原生廣告的媒體內(nèi)容相關(guān)的數(shù)據(jù),媒體內(nèi)容則通過MediaView類展示。使用MediaContent實例設(shè)置MediaView mediaContent屬性時:

·如果廣告有視頻素材資源可用,則系統(tǒng)會對其進(jìn)行緩沖,并開始在MediaView內(nèi)播放。您可以通過檢查hasVideoContent()來判斷是否有視頻素材資源可用。

·如果廣告不包含視頻素材資源,則會改為下載mainImage素材資源,并將其放置在MediaView內(nèi)。

注意:默認(rèn)情況下,mainImage是下載的第一個圖片素材資源。如果使用了setReturnUrlsForImageAssets(true),則mainImage為null,您必須將mainImage屬性設(shè)置為您手動下載的圖片。請注意,僅在沒有視頻素材資源可用時,系統(tǒng)才會使用此圖片。

注冊原生廣告對象

這是最后一步,也就是向負(fù)責(zé)顯示原生廣告對象的視圖注冊該對象:

1613721510(1).png

1613721531(1).png

原生視頻廣告

除了圖片、文字和數(shù)字外,有些原生廣告會包含視頻素材資源。但不是每個廣告都會包含視頻素材資源,相關(guān)應(yīng)用也并非一定要展示這些資源。

為了簡化視頻的配置和展示,Google移動廣告SDK提供了與視頻相關(guān)的以下類:

VideoOptions

通過VideoOptions類,您可以為應(yīng)用配置原生視頻素材資源的行為方式。VideoOptions對象應(yīng)該分配給構(gòu)建AdLoader時使用的NativeAdOptions對象:

1613721555(1).png

1613721585(1).png

VideoOptions.Builder類目前提供了setStartMuted()方法,用于指示該SDK是否應(yīng)該在靜音狀態(tài)下開始播放視頻素材資源。默認(rèn)值為true。

VideoController

VideoController類用于獲取有關(guān)視頻素材資源的信息。通過調(diào)用getVideoController()方法,應(yīng)用可以從UnifiedNativeAd對象獲得對該控制器的引用:

1613721607(1).png

1613721629(1).png

即使廣告中沒有視頻素材資源,此方法也會始終返回VideoController對象。

VideoController提供hasVideoContent()方法;如果廣告中有視頻素材資源,則該方法返回true,否則返回false。

應(yīng)用也可以使用VideoController.VideoLifecycleCallbacks類,在視頻素材資源生命周期內(nèi)發(fā)生事件時接收通知:

1613721650(1).png

1613721671(1).png

銷毀廣告

當(dāng)完成原生廣告展示后,您應(yīng)該將其銷毀,以便系統(tǒng)正確地對廣告進(jìn)行垃圾回收處理。

1613721695(1).png

1613721715(1).png

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Google Developers,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多