什么是貼片廣告
貼片廣告是一種在視頻播放過程中插入的視頻或圖片廣告。視頻廣告一般是15s, 可以點跳過按鈕直接進入視頻播放界面,也可以等廣告展示結束自動進入視頻播放界面。
貼片廣告的優勢
相較於其他形式的廣告位,貼片廣告歷史深遠,是目前較為普遍的網絡視頻廣告形式。只要用戶觀看視頻,貼片廣告就會出現,所以貼片廣告的播放量較大,觸達率較高。
華為廣告服務能夠幫助開發者接入包括貼片廣告在內的6種廣告位。接下來的文章會詳細講解開屏廣告的開發步驟。示例代碼已在相關社區進行開源,歡迎開發者關注、下載並提供寶貴意見:
Github官方地址:https://github.com/hms-core/hms-ads-demo-java
Gitee官方地址:https://gitee.com/hms-core/hms-ads-demo-java
前提條件
HUAWEI Ads SDK依賴HMS Core(APK)4.0.0.300及以上版本。如果設備上未安裝HMS Core(APK)4.0.0.300及以上版本,則無法使用HUAWEI Ads SDK的相關接口。
在開發應用前需要在華為開發者聯盟網站上注冊成為開發者並完成實名認證,具體方法可參見帳號注冊認證。
參見創建項目和在項目中添加應用完成應用的創建。
開發前准備
廣告服務的集成需如下4個關鍵步驟,可以參考華為開發者聯盟文檔
1. 導入HUAWEI Ads SDK
2. 配置網絡權限
3. 配置混淆腳本
4. 初始化SDK
開發關鍵步驟
1.1 創建InstreamAdLoader。
InstreamAdLoader類提供了InstreamAdLoader.Builder類,可用於設置廣告位ID、設置自定義選項和創建InstreamAdLoader對象。
“Java” // "testy3cglm3pj0"為測試專用的廣告位ID,App正式發布時需要改為正式的廣告位ID InstreamAdLoader.Builder builder = new InstreamAdLoader.Builder(context, "testy3cglm3pj0"); // 設置貼片最大時長 InstreamAdLoader adLoader = builder.setTotalDuration(totalDuration) // 設置貼片返回的最大數量 .setMaxCount(maxCount) .setInstreamAdLoadListener(new InstreamAdLoadListener() { @Override public void onAdLoaded(List<InstreamAd> ads) { // 廣告獲取成功后調用 ... } @Override public void onAdFailed(int errorCode) { // 廣告獲取失敗后調用 ... } }).build();
當獲取廣告成功后,SDK會調用InstreamAdLoadListener監聽器的onAdLoaded()方法返回的InstreamAd對象列表。
當獲取廣告失敗后,SDK會調用InstreamAdLoadListener監聽器的onAdFailed()方法。
1.2 獲取廣告。
InstreamAdLoader提供loadAd()方法獲取廣告。
InstreamAdLoader.loadAd(new AdParam.Builder().build());
調用loadAd()后,SDK將對添加的監聽器方法進行一次成功或失敗的回調。
1.3 展示貼片廣告。
獲取到廣告后在監聽器的回調方法中展示貼片廣告,需要在每個廣告視圖的一角展示“為什么看到此廣告”的圖標“i”或者“不再顯示該廣告”的圖標“x”,並且必須展示廣告標識。
以下是展示貼片廣告的步驟:
定義貼片廣告布局。
需要定義一個布局用於展示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" /> <!-- 跳過按鈕視圖 --> <TextView android:id="@+id/instream_skip" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> <!-- 倒計時視圖 --> <TextView android:id="@+id/instream_count_down" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> <!-- 廣告標識視圖 --> <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" ... /> <!-- 點擊廣告跳轉按鈕 --> <TextView android:id="@+id/instream_call_to_action" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> </RelativeLayout>
-
注冊廣告到廣告視圖。
獲取到InstreamAd對象列表后,需要將廣告注冊到廣告視圖。
instreamView.setInstreamAds(ads);
-
監聽廣告狀態。
貼片廣告提供了InstreamMediaStateListener、InstreamMediaChangeListener和MediaMuteListener來監聽貼片廣告狀態。
instreamView.setInstreamMediaChangeListener(new InstreamMediaChangeListener(){ @Override public void onSegmentMediaChange(InstreamAd ad) { // 廣告媒體切換 ... } }); instreamView.setInstreamMediaStateListener(new InstreamMediaStateListener() { @Override public void onMediaProgress(int percent, int playTime) { // 播放過程 ... } @Override public void onMediaStart(int playTime) { // 播放開始 ... } @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) { // 播放錯誤 ... } }); instreamView.setMediaMuteListener(new MediaMuteListener() { @Override public void onMute() { // 貼片廣告靜音 ... } @Override public void onUnmute() { // 貼片廣告取消靜音 ... } });
銷毀廣告。
當貼片廣告展示結束時,應將貼片廣告視圖銷毀。
instreamView.destroy();
更多應用內廣告形式操作指南:
6、應用內添加貼片廣告
>>訪問華為廣告服務官網,獲取華為廣告服務開發指導文檔
原文鏈接:developer.huawei.com/consumer/cn…
原作者:胡椒