1-1. 動画ネイティブ広告(FLEX)の概要
動画ネイティブ広告(FLEX)は、規定のサイズで動画広告を画面内に表示します。表示サイズ及び位置の指定はできません。規定のサイズは、各ADNWにより異なります。また、動画広告を再生中であっても任意のタイミングで動画広告を閉じることも可能です。
1-2. 実装方法
① 動画ネイティブ広告(FLEX)専用の広告枠が必要となります。アドフリくん管理画面の [広告枠]タブ > [広告枠 追加] > [バナー種類] で「動画ネイティブ広告(FLEX)」を選択します。
② “jp.tjkapp.adfurikunsdk.moviereward.AdfurikunNativeAdFlex” をインポートして、アドフリくん管理画面で発行された広告枠IDと、広告を表示するActivityでAdfurikunNativeAdFlexクラスのインスタンスを生成します。
// 広告枠IDとActivityを設定(コンストラクタ)
new AdfurikunNativeAdFlex (String appId, Activity activity)
③ 内部状態をActivityのライフサイクルに合わせて管理するため、②で作成したインスタンスの以下のメソッドを、必要な箇所に実装します。全て必須です。
メソッド | 説明 |
---|---|
onStart() | 状態管理の初期化、動画広告の準備を開始します。 ActivityのonStart()で実行してください。 |
onResume() | 状態管理の再開、動画の再開などを行います。 ActivityのonResume()で実行してください。 |
onPause() | 状態管理の一時停止、動画の一時停止などを行います。 ActivityのonPause()で実行してください。 |
onStop() | 状態管理の停止、動画の停止または破棄などを行います。 ActivityのonStop()で実行してください。 |
onDestroy() | 状態管理の破棄を行います。 ActivityのonDestroy()、もしく 明示的に破棄したい時に実行してください。実行後に再開することはできません。必ず動画リワードインスタンスを破棄してください。 |
④ 下記メソッドで広告の読み込みを実行します。
広告枠が新ローディングモードの場合、広告表示準備を明示的に行う必要があります。
load
メソッドを呼び出すとそのタイミングで各アドネットワークへの表示準備開始をします。
//広告読み込み
public void load ()
load()関数を呼び出さないと表示準備が行われません。
⑤ 下記メソッドで動画再生準備が完了したかを確認し、完了していたら明示的に動画再生開始メソッドを実行します。
//動画の再生準備が完了したか確認
public boolean isPrepared ()
//動画再生開始
public void play ()
⑥ 動画の準備状況 / 再生状況の通知を行うため、通知リスナーを登録して内容に応じた処理を行ってください。
//状態通知リスナーを登録する
public void setAdfurikunNativeFlexListener (AdfurikunMovieNativeAdFlexListener listener)
AdfurikunMovieNativeAdFlexListener 動画の準備状況 / 再生状態を受け取るイベントリスナー
//動画の準備が完了(広告が表示可能になりました)
public void onPrepareSuccess ()
//動画の準備が失敗
public void onPrepareFailure (AdfurikunMovieError error)
//動画の再生を開始した
public void onStartPlaying (MovieNativeAdFlexData data)
//動画の再生が完了した
public void onFinishedPlaying (MovieNativeAdFlexData data)
//動画の再生が失敗した(「内部エラーや操作により動画を中断した場合」や「再生直前でネットワークが切れた場合」など)
public void onFailedPlaying (MovieNativeAdFlexData data)
//動画の画面を閉じた
public void onAdClose (MovieNativeAdFlexData data)
各メソッドで返却される動画の情報(MovieNativeAdFlexDataクラス) 、以下のpublicなメンバの構造です。
//MovieNativeAdFlexDataクラス
String adnetworkKey : アドネットワークキー
String adnetworkName : アドネットワーク名
⑥ 動画の再生後、明示的に動画を閉じることも可能です。その場合は、動画を閉じるメソッドを実行します。 下記メソッド実行後は、AdfurikunMovieNativeAdFlexListenerは、動画の視聴が完了していれば、onFinishedPlayingを返します。onAdCloseは視聴完了しているかに関わらず返します。
//動画を閉じる
public void closeAd ()
エラーコードの情報
タイプ | コード | 内容 |
---|---|---|
NO_AD | 0 | 広告の在庫がない場合 |
NO_NETWORK | 1 | オフラインまたはフライトモードの場合 |
LOADING | 2 | 広告読み込み中の場合 |
1-3. 実装例
■実装例 (詳細 、サンプルアプリ・AdfurikunMovieRewardSample を参照)
●アドフリくん動画ネイティブ広告(FLEX)のインスタンス生成と通知リスナーの登録
//AdfurikunNativeAdFlex インスタンス変数を定義
AdfurikunNativeAdFlex mNativeAdFlex;
// 状態通知リスナーを定義
AdfurikunMovieNativeAdFlexListener mListener = new AdfurikunMovieNativeAdFlexListener(){
.....
}
@Override
protected void onCreate(Bundle bundle) {
// 広告枠ID・Activityを指定し、動画ネイティブ広告(FLEX)のインスタンスを生成
mNativeAdFlex = new AdfurikunNativeAdFlex(****(広告枠ID)****, this);
// 状態通知リスナーを登録
mNativeAdFlex.setAdfurikunNativeFlexListener(mListener);
}
●Activityのライフサイクルに合わせて状態を管理
@Override
protected void onStart() {
super.onStart();
mNativeAdFlex.onStart();
}
@Override
protected void onResume() {
super.onResume();
mNativeAdFlex.onResume();
}
@Override
protected void onPause() {
mNativeAdFlex.onPause();
super.onPause();
}
@Override
protected void onStop() {
mNativeAdFlex.onStop();
super.onStop();
}
@Override
protected void onDestroy() {
mNativeAdFlex.onDestroy();
super.onDestroy();
}
●動画の準備完了通知を受け取る
// 状態通知リスナーで通知を受ける
AdfurikunMovieNativeAdFlexListener mListener = new AdfurikunMovieNativeAdFlexListener(){
@Override
public void onPrepareSuccess() {
// 動画の再生が可能になりました。
// 状態をフラグなどで管理してください
}
@Override
public void onPrepareFailure(AdfurikunMovieError error) {
// 広告の読み込みが失敗になりました。
// もう一度広告の読み込みしてください。
}
.....
}
●広告の読み込みを開始する
// 広告読み込み。
mReward.load();
●動画の準備完了を判定する
// AdfurikunNativeAdFlexのインスタンスからでも確認できます。
if ( mNativeAdFlex.isPrepared() ) {
// 動画の再生が可能です。
}
●動画再生を開始するトリガーから再生開始
// 例えばButtonのクリックなど
mButton.setOnClickListener ( new OnClickListener() {
@Override
public void onClick (View v) {
if ( mNativeAdFlex.isPrepared() ) {
// 再生開始。
mNativeAdFlex.play();
}
}
}
●動画の再生開始 / 再生完了 / 再生失敗 の通知を受け取る
// 状態通知リスナーで通知を受ける
AdfurikunMovieNativeAdFlexListener mListener = new AdfurikunMovieNativeAdFlexListener(){
.....
@Override
public void onStartPlaying(MovieNativeAdFlexData data) {
// 動画の再生を開始します。
}
@Override
public void onFinishedPlaying(MovieNativeAdFlexData data) {
// 動画の再生が完了しました。
}
@Override
public void onFailedPlaying(MovieNativeAdFlexData data) {
// 動画の再生が失敗しました。
// 再生開始時にネットワークへ接続していない場合も、失敗として通知します。
}
.....
}
●動画広告を閉じる
mNativeAdFlex.closeAd();
●動画広告が閉じられた通知を受け取る
// 状態通知リスナーで通知を受ける
AdfurikunMovieNativeAdFlexListener mListener = new AdfurikunMovieNativeAdFlexListener(){
.....
@Override
public void onAdClose(MovieNativeAdFlexData data) {
// 動画広告がとじられました。
}
}
●動画ネイティブ広告(FLEX)のインスタンスの破棄
// Activityのライフサイクル以外でもインスタンスを破棄することができます。
if (mNativeAdFlex != null) {
// onDestroy()後に再開することはできません。
mNativeAdFlex.onDestroy();
mNativeAdFlex = null;
}
1-4. 注意事項
・動画ネイティブ広告(FLEX)を再生させたActivityを画面固定している場合は、動画ネイティブ広告(FLEX)の画面回転によって同じく画面回転してしまいます。
以下の方法で再生させたActivityを画面回転しないように対応可能です。
/**
* ApplicationクラスからActivityLifecycleCallbacksを設定し、
* オーバーライドされたonActivityStartedのメソッドで
* 以下のコードを追加すると固定できます
*/
@Override
public void onActivityStarted(Activity activity) {
if (activity instanceof FlexViewAdActivity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}