HUAWEI Ads原生廣告介紹

來源: 華為開發(fā)者聯(lián)盟官網
作者:華為開發(fā)者聯(lián)盟官網
時間:2020-12-10
17589
原生廣告是創(chuàng)建與應用內容融于一體的廣告形式,支持您自由定制界面。

MjhhNjFkOC5qcGVn.jpg

原生廣告

原生廣告是創(chuàng)建與應用內容融于一體的廣告形式,支持您自由定制界面。

0000000000011111111.20201208194807.69471833786743223407748925014258_50511209010029_2800_9D03BC081FF4C577BCD3F12DA19775411516EFF1D65F5F3EB8BFBDC96C0AD53C.png

添加原生廣告

原生廣告需要通過NativeAdLoader類獲取。

1.構建NativeAdLoader。

NativeAdLoader類提供了NativeAdLoader.Builder類,可用于設置廣告位ID、設置自定義選項和構建NativeAdLoader對象。

示例代碼如下所示:

// "testy63txaom86"為專用的測試廣告位ID,App正式發(fā)布時需要改為正式的廣告位ID

NativeAdLoader.Builder builder = new NativeAdLoader.Builder(this, "testy63txaom86");

builder.setNativeAdLoadedListener(new NativeAd.NativeAdLoadedListener() {

    @Override

    public void onNativeAdLoaded(NativeAd nativeAd) {

        // 廣告獲取完成后調用

        ...

    }

}).setAdListener(new AdListener() {

    @Override

    public void onAdFailed(int errorCode) {

        // 廣告獲取失敗時調用

        ...

    }

});

NativeAdLoader nativeAdLoader = builder.build();

當獲取廣告成功后,SDK會調用NativeAd.NativeAdLoadedListener監(jiān)聽器的onNativeAdLoaded()方法返回NativeAd對象。

當獲取廣告失敗后,SDK會調用AdListener監(jiān)聽器的onAdFailed()方法。

2.獲取廣告。

NativeAdLoader提供loadAd()和loadAds()兩種方法獲取廣告。

·loadAd()請求單個原生廣告。

AdParam是唯一的參數(shù),代碼如下所示:

nativeAdLoader.loadAd(new AdParam.Builder().build());

調用loadAd()后,SDK將對添加的監(jiān)聽器方法進行一次成功或失敗的回調。

·loadAds()請求多個原生廣告。

loadAds()請求有兩個參數(shù),除AdParam外,還有請求加載的廣告數(shù)量,最大為5。SDK返回的廣告數(shù)量將會小于等于所請求的廣告數(shù)量,并且廣告皆不相同。

代碼如下所示:

nativeAdLoader.loadAds(new AdParam.Builder().build(),5);

調用loadAds()后,監(jiān)聽器將會根據(jù)返回的廣告?zhèn)€數(shù)進行多次回調。請求多個廣告時,可以在回調代碼中使用NativeAdLoader.isLoading()方法來判斷廣告是否已獲取完成。代碼如下所示:

// "testy63txaom86"為專用的測試廣告位ID,App正式發(fā)布時需要改為正式的廣告位ID

NativeAdLoader.Builder builder = new NativeAdLoader.Builder(this, "testy63txaom86");

NativeAdLoader nativeAdLoader = builder.setNativeAdLoadedListener(new NativeAd.NativeAdLoadedListener() {

    @Override

    public void onNativeAdLoaded(NativeAd nativeAd) {

        if (nativeAdLoader.isLoading()) {

            // nativeAdLoader仍在獲取廣告

            ...

        } else {

            // nativeAdLoader完成廣告獲取

            ...

        }

    }

}).build();

nativeAdLoader.loadAds(new AdParam.Builder().build(), 5);

說明

再次使用NativeAdLoader獲取廣告前,請確保先前的請求已經完成。

3.展示原生廣告。

獲取到廣告后在監(jiān)聽器的回調方法中展示原生廣告,需要在每個廣告視圖的一角展示“為什么看到此廣告”的圖標“i”或者“不再顯示該廣告”的圖標“x”,并且必須展示廣告標識。

以下是展示原生廣告的步驟:

a.定義原生廣告布局。

需要自定義一個布局用于展示NativeAd中的素材。

說明

必須將NativeView作為原生廣告的根布局,否則會影響廣告收益。

對于使用RelativeLayout來展示素材視圖的原生廣告,其視圖層次結構示例如下:

<com.huawei.hms.ads.nativead.NativeView xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    ... >

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        ... >

        <!-- 多媒體視圖 -->

        <com.huawei.hms.ads.nativead.MediaView

            android:id="@+id/ad_media"

            android:layout_width="75dp"

            android:layout_height="50dp"

            ... />

        <RelativeLayout

            ... >

        <TextView

            android:id="@+id/ad_title"

            android:layout_width="match_parent"

            android:layout_height="34dp"

            ...  />

        <!-- 其他素材 -->

        ...

        </RelativeLayout>

        <!-- 其他素材 -->

        ...

    </RelativeLayout>

</com.huawei.hms.ads.nativead.NativeView>

b.注冊和填充素材視圖。

獲取到NativeView對象后,需要注冊和填充素材。

注冊和填充標題、多媒體的示例代碼如下:

private void initNativeAdView(NativeAd nativeAd, NativeView nativeView) {

    // 注冊和填充標題素材視圖

    nativeView.setTitleView(nativeView.findViewById(R.id.ad_title));

    ((TextView) nativeView.getTitleView()).setText(nativeAd.getTitle());

    // 注冊和填充多媒體素材視圖

    nativeView.setMediaView((MediaView) nativeView.findViewById(R.id.ad_media));

    nativeView.getMediaView().setMediaContent(nativeAd.getMediaContent());

    // 注冊和填充其他素材視圖

    nativeView.setAdSourceView(nativeView.findViewById(R.id.ad_source));

    nativeView.setCallToActionView(nativeView.findViewById(R.id.ad_call_to_action));

    if (null != nativeAd.getAdSource()) {

        ((TextView) nativeView.getAdSourceView()).setText(nativeAd.getAdSource());

    }

    nativeView.getAdSourceView()

            .setVisibility(null != nativeAd.getAdSource() ? View.VISIBLE : View.INVISIBLE);

    if (null != nativeAd.getCallToAction()) {

        ((Button) nativeView.getCallToActionView()).setText(nativeAd.getCallToAction());

    }

    nativeView.getCallToActionView()

            .setVisibility(null != nativeAd.getCallToAction() ? View.VISIBLE : View.INVISIBLE);

 

    // 注冊原生廣告對象

    nativeView.setNativeAd(nativeAd);

}

依次設置其他要展示的廣告素材。

MediaView用于展示多媒體素材。如果獲取的廣告含有視頻素材,則視頻會在MediaView內播放。否則MediaView會顯示一個圖片素材。

c.向NativeView注冊原生廣告對象。

示例代碼如下:

nativeView.setNativeAd(nativeAd);

d.展示NativeView。

將NativeView添加到界面即可展示原生廣告。示例代碼如下:


private void loadAd() {

    NativeAdLoader.Builder builder = new NativeAdLoader.Builder(this, "testy63txaom86");

    builder.setNativeAdLoadedListener(new NativeAd.NativeAdLoadedListener() {

        @Override

        public void onNativeAdLoaded(NativeAd nativeAd) {

            ...

            // 獲取NativeView視圖

            NativeView nativeView = (NativeView) getLayoutInflater().inflate(R.layout.ad_native, null);

            // 注冊和填充原生廣告素材視圖

            initNativeAdView(nativeAd, nativeView);

            // 將NativeView添加到界面

            FrameLayout adFrameLayout = findViewById(R.id.frame_layout_ad);

            adFrameLayout.removeAllViews();

            adFrameLayout.addView(nativeView);

            ...

        }

    });

    ...

}

private void initNativeAdView(NativeAd nativeAd, NativeView nativeView) {

    // 注冊和填充標題素材視圖

    nativeView.setTitleView(nativeView.findViewById(R.id.ad_title));

    ((TextView) nativeView.getTitleView()).setText(nativeAd.getTitle());

    // 注冊和填充多媒體素材視圖

    nativeView.setMediaView((MediaView) nativeView.findViewById(R.id.ad_media));

    nativeView.getMediaView().setMediaContent(nativeAd.getMediaContent());

    // 注冊和填充其他素材視圖

    ...

    // 注冊原生廣告對象

    nativeView.setNativeAd(nativeAd);

}


4.(可選)監(jiān)聽廣告事件。

為原生廣告添加事件監(jiān)聽器的示例代碼如下:

NativeAdLoader nativeAdLoader = builder.setAdListener(new AdListener() {

    @Override

    public void onAdClicked() {

        // 廣告點擊時調用

        ...

    }

    ...

}).build();

5.銷毀廣告。

當原生廣告不再展示時,應將其銷毀。

nativeAd.destroy();

原生視頻廣告

原生廣告除了包含圖片、文字外,還可能會包含視頻素材。HUAWEI Ads SDK還提供了以下兩個類用于視頻的配置和控制。

VideoConfiguration

通過VideoConfiguration類,可以對原生視頻進行相關配置。示例代碼如下:

// "testy63txaom86"為專用的測試廣告位ID,App正式發(fā)布時需要改為正式的廣告位ID

NativeAdLoader.Builder builder = new NativeAdLoader.Builder(this, "testy63txaom86");

// 設置是否在靜音狀態(tài)下開始播放視頻素材,其默認值為true

VideoConfiguration videoConfiguration = new VideoConfiguration.Builder()

        .setStartMuted(true)

        .build();

NativeAdConfiguration adConfiguration = new NativeAdConfiguration.Builder()

        .setVideoConfiguration(videoConfiguration)

        .build();

builder.setNativeAdOptions(adConfiguration);

VideoOperator

VideoOperator類用于視頻信息獲取和視頻控制??刂破鲗嵗枰ㄟ^調用NativeAd.getVideoOperator()方法獲得。當廣告中沒有視頻素材時,此方法也會返回VideoOperator對象。

VideoOperator videoOperator=nativeAd.getVideoOperator();

VideoOperator提供hasVideo()方法判斷廣告中是否有視頻素材。

通過實現(xiàn)VideoOperator.VideoLifecycleListener類可以監(jiān)聽視頻播放過程中的事件。

videoOperator.setVideoLifecycleListener(new VideoOperator.VideoLifecycleListener() {

    @Override

    public void onVideoEnd() {

        // 視頻播放完時調用

        ...

        super.onVideoEnd();

    }

    ...

});

立即登錄,閱讀全文
版權說明:
本文內容來自于華為開發(fā)者聯(lián)盟官網,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家