投放影片廣告時,如何快速與第三方播放器相容?

HMSCore發表於2023-04-18

新媒體時代,廣告樣式越來越豐富。相較於傳統的圖文資訊,影片類廣告更具有直觀性,能夠讓消費者在瞭解產品知識和功能的同時加深對產品的印象。

因此在各類網站或App上投放影片類廣告是個很好的宣傳方式,但廣告商們如果想在網站上展示影片廣告,必須確保影片廣告投放協議與釋出渠道的播放器相容;如果不能相容,廣告商或者影片廣告投放平臺必須建立不同的響應,來與特定影片播放器相容。為此,網際網路廣告署(IAB)開發了影片廣告投放模板 (VAST)這種 XML 模式,允許透過影片廣告伺服器提供流內影片廣告,並在多個網站和裝置上的影片播放器中播放,不僅解決相容性問題,還提高了影片廣告投放的效率和可擴充套件性。

為幫助廣告商們更好投放廣告,華為鯨鴻動能平臺提供了HUAWEI VAST SDK的整合,目前僅支援符合VAST協議的線性廣告(投放形式為前、中、後貼片廣告)。

開發準備

整合SDK

使用VAST協議時需要整合HUAWEI VAST SDK。同時如果您需要使用預設的播放器,請整合HUAWEI Player SDK。

  1. 配置Maven倉地址。

Android Studio的程式碼庫配置在Gradle 外掛7.0以下版本、7.0版本和7.1及以上版本有所不同。請根據您當前的Gradle 外掛版本,選擇對應的配置過程。

以7.0版本為例:

a) 開啟Android Studio專案級“build.gradle”檔案。

b) 新增Maven程式碼庫。

在“buildscript > repositories”中配置Maven倉地址。

buildscript {
    repositories {
        google()
        jcenter()
        // 配置鯨鴻動能SDK的Maven倉地址
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

c) 開啟專案級“settings.gradle”檔案,配置Maven倉地址。

dependencyResolutionManagement {
    ...
    repositories {
        google()
        jcenter() 
        // 配置鯨鴻動能SDK的Maven倉地址
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

配置網路許可權

在targetSdkVersion 28及以上的手機上允許HTTP(S)網路請求,在“AndroidManifest.xml”做以下配置。

<application
    ...
    android:usesCleartextTraffic="true"
    >
    ...
</application>

配置混淆指令碼

您編譯APK前需要配置混淆配置檔案,避免混淆HUAWEI VAST SDK導致功能異常。

開啟Android工程應用級根目錄下的“proguard-rules.pro”混淆配置檔案,加入排除HUAWEI VAST SDK的混淆配置。

-keep class com.huawei.openalliance.ad.** { *; }
-keep class com.huawei.hms.ads.** { *; }

初始化SDK

初始化HUAWEI VAST SDK

整合HUAWEI VAST SDK後,在應用的DemoApplication類中,初始化HUAWEI VAST SDK。

// 當使用者同意廣告服務獲取資料時,呼叫下面的方法
SdkFactory.userAcceptAdLicense(true);

開發步驟

實現VAST廣告

使用預設播放器播放線性廣告

播放線性廣告可以使用預設的播放器,也可使用您實現的自定義播放器。

  1. 在XML檔案中,初始化播放器的佈局。示例程式碼如下:
<FrameLayout
    android:id="@+id/fl_linear_ad"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:background="@android:color/black"
    android:visibility="gone"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true" />
  1. 生成預設的廣告播放控制器,註冊線性廣告檢視。示例程式碼如下:
private void registerLinearAdView() {
    mLinearAdView = findViewById(R.id.fl_linear_ad);
    mProgressBar = findViewById(R.id.progress);
    VastAdPlayer.getInstance().registerLinearAdView(mLinearAdView, getController());
}

private BaseVideoController getController() {
    return mAdConfig.isCustomVideoPlayer() ? new DefaultVideoController(this) : new CustomVideoController(this);
}
  1. 請求播放線性廣告。示例程式碼如下:
VastAdPlayer.getInstance().startLinearAd(linearAdSlot, new AdsRequestListener() {
    @Override
    public void onSuccess(View view, int responseCode) {
    }

    @Override
    public void onFailed(View view, int responseCode) {
    }

    @Override
    public void playAdReady() {
        mLinearAdView.setVisibility(View.VISIBLE);
    }

    @Override
    public void playAdFinish() {
        mLinearAdView.setVisibility(View.INVISIBLE);
    }

    @Override
    public void onBufferStart() {
        mProgressBar.setVisibility(View.VISIBLE);
    }

    @Override
    public void onBufferEnd() {
        mProgressBar.setVisibility(View.INVISIBLE);
    }
});

使用自定義播放器播放線性廣告

  1. 在XML檔案中,初始化播放器的佈局。示例程式碼如下:
<FrameLayout
    android:id="@+id/fl_linear_ad"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:background="@android:color/black"
    android:visibility="gone"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true" />
  1. 實現自定義的廣告播放器控制器。示例程式碼如下:
public class CustomVideoController extends BaseVideoController implements VastPlayerListener {
    public CustomVideoController(Context context) {
        this(context, null);
    }
    public CustomVideoController(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public CustomVideoController(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }
    @Override
    public int getLayoutId() {
        return R.layout.activity_video_player;
    }
    private void initView(){
        ...
    }
}
  1. 生成自定義的廣告播放器控制器,註冊線性廣告檢視。示例程式碼如下:
private void registerLinearAdView() {
    mLinearAdView = findViewById(R.id.fl_linear_ad);
    mProgressBar = findViewById(R.id.progress);
    VastAdPlayer.getInstance().registerLinearAdView(mLinearAdView, getController());
}

private BaseVideoController getController() {
    return mAdConfig.isCustomVideoPlayer() ? new DefaultVideoController(this) : new CustomVideoController(this);
}
  1. 請求播放線性廣告。示例程式碼如下:
VastAdPlayer.getInstance().startLinearAd(linearAdSlot, new AdsRequestListener() {
    @Override
    public void onSuccess(View view, int responseCode) {
    }
    @Override
    public void onFailed(View view, int responseCode) {
    }
    @Override
    public void playAdReady() {
        mLinearAdView.setVisibility(View.VISIBLE);
    }
    @Override
    public void playAdFinish() {
        mLinearAdView.setVisibility(View.INVISIBLE);
    }
    @Override
    public void onBufferStart() {
        mProgressBar.setVisibility(View.VISIBLE);
    }
    @Override
    public void onBufferEnd() {
        mProgressBar.setVisibility(View.INVISIBLE);
    }
});

播放廣告莢

廣告莢的播放與線性廣告的播放,只在使用自定義播放器請求播放廣告步驟4中有區別,請求播放廣告莢的示例程式碼如下:

VastAdPlayer.getInstance().startAdPods(linearAdSlot, new AdsRequestListener() {
    @Override
    public void onSuccess(View view, int responseCode) {
    }
    @Override 
    public void onFailed(View view, int responseCode) {
    }
    @Override
    public void playAdReady() {
        mLinearAdView.setVisibility(View.VISIBLE);
    }
    @Override
    public void playAdFinish() {
        mLinearAdView.setVisibility(View.INVISIBLE);
    }
    @Override
    public void onBufferStart() {
        mProgressBar.setVisibility(View.VISIBLE);
    }
    @Override
    public void onBufferEnd() {
        mProgressBar.setVisibility(View.INVISIBLE);
    }
});

測試VAST廣告

您需要使用專門的測試廣告位ID來獲取測試廣告,以避免在測試過程中產生無效的廣告點選量。測試廣告位ID,僅可用於調測廣告功能,不可用於廣告變現,在應用正式釋出前需替換為正式的廣告位ID。您應在應用釋出前先進入流量變現官網,點選“開始變現”,登入鯨鴻動能媒體服務平臺,申請正式的廣告位ID並替換測試廣告位ID,具體操作詳情請參見展示位建立。以下表格中提供了VAST廣告的專用測試廣告位ID:

下載VAST廣告的示例程式碼並執行,可以看到如下效果圖:

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間瞭解 HMS Core 最新技術資訊~

相關文章