貼片廣告
貼片廣告是一種在視頻播放過(guò)程中插入的視頻或圖片廣告。
添加貼片廣告
貼片廣告需要通過(guò)InstreamAdLoader類獲取。
1.創(chuàng)建InstreamAdLoader。
InstreamAdLoader類提供了InstreamAdLoader.Builder類,可用于設(shè)置廣告位ID、設(shè)置自定義選項(xiàng)和創(chuàng)建InstreamAdLoader對(duì)象。
示例代碼如下所示:
// "testy3cglm3pj0"為專用的測(cè)試廣告位ID,App正式發(fā)布時(shí)需要改為正式的廣告位ID
InstreamAdLoader.Builder builder = new InstreamAdLoader.Builder(context, "testy3cglm3pj0");
// 設(shè)置貼片最大時(shí)長(zhǎng)
InstreamAdLoader adLoader = builder.setTotalDuration(totalDuration)
// 設(shè)置貼片返回的最大數(shù)量
.setMaxCount(maxCount)
.setInstreamAdLoadListener(new InstreamAdLoadListener() {
@Override
public void onAdLoaded(List<InstreamAd> ads) {
// 廣告獲取成功后調(diào)用
...
}
@Override
public void onAdFailed(int errorCode) {
// 廣告獲取失敗后調(diào)用
...
}
}).build();
當(dāng)獲取廣告成功后,SDK會(huì)調(diào)用InstreamAdLoadListener監(jiān)聽(tīng)器的onAdLoaded()方法返回的InstreamAd對(duì)象列表。
當(dāng)獲取廣告失敗后,SDK會(huì)調(diào)用InstreamAdLoadListener監(jiān)聽(tīng)器的onAdFailed()方法。
說(shuō)明
您需要根據(jù)視頻時(shí)長(zhǎng)合理設(shè)置貼片的最大時(shí)長(zhǎng)以及貼片的數(shù)量,HUAWEI Ads會(huì)根據(jù)設(shè)置的最大時(shí)長(zhǎng)和貼數(shù)返回合適數(shù)量的貼片廣告。
比如設(shè)置最大時(shí)長(zhǎng)60秒,最大貼數(shù)8,則最多返回4貼15秒或2貼30秒的廣告。設(shè)置最大時(shí)長(zhǎng)120秒,最大貼數(shù)4,則最多只會(huì)返回4貼總時(shí)長(zhǎng)不會(huì)超過(guò)120秒的廣告。
2.獲取廣告。
InstreamAdLoader提供loadAd()方法獲取廣告。
AdParam是唯一的參數(shù),代碼如下所示:
InstreamAdLoader.loadAd(new AdParam.Builder().build());
調(diào)用loadAd()后,SDK將對(duì)添加的監(jiān)聽(tīng)器方法進(jìn)行一次成功或失敗的回調(diào)。
說(shuō)明
再次使用InstreamAdLoader獲取廣告前,請(qǐng)確保先前的請(qǐng)求已經(jīng)完成。
3.展示貼片廣告。
獲取到廣告后在監(jiān)聽(tīng)器的回調(diào)方法中展示貼片廣告,需要在每個(gè)廣告視圖的一角展示“為什么看到此廣告”的圖標(biāo)“i”或者“不再顯示該廣告”的圖標(biāo)“x”,并且必須展示廣告標(biāo)識(shí)。
以下是展示貼片廣告的步驟:
a.定義貼片廣告布局。
需要定義一個(gè)布局用于展示InstreamAd列表中的廣告素材。
<RelativeLayout
android:id="@+id/instream_ad_container"
android:layout_width="match_parent"
android:layout_height="200dp"
android:visibility="gone">
<!-- 貼片廣告視圖 -->
<com.huawei.hms.ads.instreamad.InstreamView
android:id="@+id/instream_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- 跳過(guò)按鈕視圖 -->
<TextView
android:id="@+id/instream_skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
<!-- 倒計(jì)時(shí)視圖 -->
<TextView
android:id="@+id/instream_count_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
<!-- 廣告標(biāo)識(shí)視圖 -->
<TextView
android:id="@+id/instream_ad_flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
<!-- 為什么展示此廣告視圖 -->
<ImageView
android:id="@+id/instream_why_this_ad"
android:layout_width="14dp"
android:layout_height="14dp"
...
/>
<!-- 點(diǎn)擊廣告跳轉(zhuǎn)按鈕 -->
<TextView
android:id="@+id/instream_call_to_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
</RelativeLayout>
說(shuō)明
您需要結(jié)合您的視頻播放的布局來(lái)設(shè)計(jì)相應(yīng)的貼片廣告布局,如貼片廣告布局的寬高及各個(gè)視圖控件的展示位置。
b.注冊(cè)廣告到廣告視圖。
獲取到InstreamAd對(duì)象列表后,需要將廣告注冊(cè)到廣告視圖。
示例代碼如下:
instreamView.setInstreamAds(ads);
c.監(jiān)聽(tīng)廣告狀態(tài)。
貼片廣告提供了InstreamMediaStateListener、InstreamMediaChangeListener和MediaMuteListener來(lái)監(jiān)聽(tīng)貼片廣告狀態(tài)。示例代碼如下:
instreamView.setInstreamMediaChangeListener(new InstreamMediaChangeListener(){
@Override
public void onSegmentMediaChange(InstreamAd ad) {
// 廣告媒體切換
...
}
});
instreamView.setInstreamMediaStateListener(new InstreamMediaStateListener() {
@Override
public void onMediaProgress(int percent, int playTime) {
// 播放過(guò)程
...
}
@Override
public void onMediaStart(int playTime) {
// 播放開(kāi)始
...
}
@Override
public void onMediaPause(int playTime) {
// 播放暫停
...
}
@Override
public void onMediaStop(int playTime) {
// 播放停止
...
}
@Override
public void onMediaCompletion(int playTime) {
// 播放完成
...
}
@Override
public void onMediaError(int playTime, int errorCode, int extra) {
// 播放錯(cuò)誤
...
}
});
instreamView.setMediaMuteListener(new MediaMuteListener() {
@Override
public void onMute() {
// 貼片廣告靜音
...
}
@Override
public void onUnmute() {
// 貼片廣告取消靜音
...
}
});
4.銷毀廣告。
當(dāng)貼片廣告展示結(jié)束時(shí),應(yīng)將貼片廣告視圖銷毀。
instreamView.destroy();
測(cè)試貼片廣告
測(cè)試貼片廣告時(shí),需要使用專門的測(cè)試廣告位ID來(lái)獲取測(cè)試廣告,以避免在測(cè)試過(guò)程中產(chǎn)生無(wú)效的廣告點(diǎn)擊量。
測(cè)試廣告位ID僅作為功能調(diào)試使用,不可用于廣告變現(xiàn)。您需要在應(yīng)用發(fā)布前申請(qǐng)正式的廣告位ID,并替換測(cè)試廣告位ID。
以下表格中提供了貼片廣告的專用測(cè)試廣告位ID:
下載貼片廣告的示例代碼并運(yùn)行,可以看到如下效果圖:
另外您也可以通過(guò)學(xué)習(xí)Codelab中的教程來(lái)集成貼片廣告。