1-1. 動画ネイティブの実装方法
① 動画ネイティブ広告専用の広告枠が必要となります。アドフリくん管理画面の [広告枠]タブ > [広告枠 追加] > [バナー種類] で「動画ネイティブ広告」を選択します。
② “jp.tjkapp.adfurikunsdk.AdfurikunMovieNativeAd” をインポートして、アドフリくん管理画面で発行された広告枠IDと、広告を表示するActivityでAdfurikunMovieNativeAdクラスのインスタンスを生成します。
インスタンスの生成時に、事前に広告のキャッシュを行うため、広告を表示する画面より前にインスタンスの作成を行うことで広告の表示がスムーズに行われます。
// 広告枠IDとActivityと広告の縦横サイズを設定(コンストラクタ)
new AdfurikunMovieNativeAd (Activity activity, String appId, int width, int height)
各引数の説明
引数 | 説明 |
---|---|
Activity activity | Activity |
String appId | 広告枠ID |
int width | 広告横サイズ |
int height | 広告縦サイズ |
③ 動画の読み込み / 再生状況の通知を行うため、通知リスナーを登録してないように応じた処理を行ってください。
// 動画の読み込みリスナーを登録する
public void setAdfurikunNativeAdLoadListener(AdfurikunNativeAdLoadListener listener)
読み込み通知リスナーで呼び出されるメソッド
AdfurikunNativeAdLoadListenerは、loadの成功 / 失敗に応じて、以下のメソッドがメインスレッドにて呼び出されます
// 動画の読み込みが完了
void onNativeAdLoadFinish(AdfurikunMovieNativeAdInfo adInfo, String appId)
// 広告の取得に成功した場合にメインスレッドでコールバックされます
上述のコールバックが実行された時点で広告のレイアウトまで完了します。あとは動画を再生したいタイミングで明示的にplay
メソッドを呼び出してください
// 動画の読み込みが失敗
void onNativeAdLoadError(AdfurikunMovieError error, String appId)
// 広告の取得に失敗した場合にメインスレッドでコールバックされます
// エラーの詳細についてはAdfurikunMovieErrorを参照してください
// 動画の再生リスナーを登録する
public void setAdfurikunNativeAdVideoListener(AdfurikunNativeAdVideoListener listener)
読み込み通知リスナーで呼び出されるメソッド
AdfurikunNativeAdVideoListenerは、動画広告の再生開始 / 終了に応じて、以下のメソッドがメインスレッドにて呼び出されます
// 動画の再生が開始
void onNativeAdViewPlayStart(String appId)
// 広告の再生が開始された場合にメインスレッドでコールバックされます
上述のコールバックは以下のタイミングで呼ばれます
・動画の初回再生開始のタイミング
・動画のリプレイ開始のタイミング
・動画の自動切り替え完了後に、動画が自動で再生されたタイミング
また、以下のタイミングでは呼ばれません
・アプリ側で、動画を一時停止して、再度動画を再生させた場合
// 動画の再生が完了
void onNativeAdViewPlayFinish(String appId, Boolean isVideoAd)
// 動画広告の再生が完了した場合にメインスレッドでコールバックされます
// isVideoAdは完了した広告が動画か静止画であるかを判定するためのフラグです
// 静止画の場合は、onNativeMovieAdViewPlayFinishが表示直後に呼ばれます
// 静止画の場合は、表示直後に呼ばれるため、再生完了後、広告を切り替えるという処理をコールバックでしている場合は、分岐処理が必要
// 動画の再生が失敗
void onNativeAdViewPlayFail(String appId, AdfurikunMovieError error)
// 広告の再生に失敗した場合にメインスレッドでコールバックされます
// エラーの詳細についてはAdfurikunMovieErrorを参照してください
各メソッドで返却されるパラメータの説明
パラメータ名 | 説明 |
---|---|
AdfurikunMovieNativeAdInfo adInfo | アドネットワークから取得した広告の情報 |
AdfurikunMovieError error | エラーコードなどのエラーに関する情報が格納されているオブジェクト |
String appId | 広告枠ID |
isVideoAd appId | 再生が完了した広告が動画か静止画であるかを判定するためのフラグ(True : 動画, False : 静止画) |
アドネットワークから取得した広告の情報
メソッド | 説明 |
---|---|
getTitle | 動画広告のタイトル |
getDesc | 動画広告の説明文 |
エラーコードの情報
タイプ | コード | 内容 |
---|---|---|
NO_AD | 0 | 広告の在庫がない場合 |
NO_NETWORK | 1 | オフラインまたはフライトモードの場合 |
LOADING | 2 | 広告読み込み中の場合 |
INVALID_APP_ID | 3 | 広告IDが登録されている内容と異なる場合 |
API_REQUEST_FAILURE | 4 | リクエストが失敗した場合 |
NO_SUPPORT_API_VERSION | 5 | API Levelが14以下の場合 |
PLAYER_ITEM_LOAD_FAILURE | 6 | 広告の読み込みが失敗した場合 |
PLAYER_ITEM_PLAY_FAILURE | 7 | 広告の再生が失敗した場合 |
OTHER_ERROR | 8 | その他の予期せぬエラーが発生した場合 |
④ 下記のメソッドを呼び出し、動画ネイティブ広告ビューを貼る
// 動画ネイティブ広告ビューを取得
public View getNativeAdView()
⑤ 下記メソッドを呼ぶことで各アドネットワークから広告情報の読み込みを開始します。
//アドネットワークから広告の読み込みを開始
public void load ()
1-2. 広告の表示制御およびインスタンスの状態管理
想定する状況に応じて、下記のAdfurikunMovieNativeAdインスタンスメソッドを使用し、View広告の表示制御を行います
メソッド名 | 説明 |
---|---|
play | 広告の取得の完了後、任意のタイミングでこのメソッドを呼んだ場合に広告の再生を開始することができます |
pauseByOperation | 広告の再生を一時停止します |
changeAdSize | 広告のサイズを変更します |
pause | SDKの処理を一時停止します。 広告を表示するActivityのonPause()で使用します 必ず実行するようにしてください。 |
resume | SDKの処理を再開します。 広告を表示するActivityのonResume()で使用します 必ず実行するようにしてください。 |
remove | SDKが使用しているリソースの破棄を行います。ActivityのonDestroy()の最初、もしくはレイアウトを破棄する時に使用します。 ※レイアウトが不要になった場合は、必ず実行するようにしてください。なお、remove()実行後に再開する事は出来ません。必要な場合は、もう一度AdfurikunMovieNativeAdの作成を行ってください。 |
1-3. 動画の自動停止機能について
動画ネイティブ広告(View)は、表示エリア内において(コンテンツ領域とタイトルバーを含んだエリア)、広告Viewの可視域が60%以上の時のみ動画を再生し、60%未満の場合は自動で再生を停止します。
したがって、スクロールなどで広告が隠れて、広告の見えている部分が60%未満になったタイミングで動画の再生が自動で停止されて、再び60%以上表示されたタイミングで自動的に再生が再開されます。
ただし、pauseByOperation
メソッドで動画の再生が一時停止されている場合は、60%以上が画面に表示されていても自動で動画の再生は開始されません。また、動画の停止中は案件の自動更新も同じく一時的に停止します。
*なお、この機能はOS 3.2以上の端末のみ提供となります。
注意点
別の画面に遷移した場合も広告の再生が一時停止されて、広告を表示している画面に復帰した場合は広告の再生が再開されます。
ただし、上の挙動は1-2のpauseとresumeで実現しているため、pauseとresumeを実装していただけるようお願いいたします。
1-4. 動画ネイティブの実装例
■実装例 (詳細は、サンプルアプリ・AdfurikunMovieRewardSampleのSimpleMovieNativeAdを参照)
⚫︎インスタンス生成・通知リスナー登録・広告ビューを貼る
// AdfurikunMovieNativeAdのインスタンス変数を定義
AdfurikunMovieNativeAd nativeAd
// 読み込み通知リスナーを定義
AdfurikunNativeAdLoadListener mLoadListener = new AdfurikunNativeAdLoadListener() {
....
}
// 再生通知リスナーを定義
AdfurikunNativeAdVideoListener mVideoListener = new AdfurikunNativeAdVideoListener() {
....
}
@Override
Protected void onCreate(Bundle bundle) {
// 広告枠ID・Activity・広告の横縦サイズを指定し、動画ネイティブ広告のインスタンスを生成
mNativeAd = new AdfurikunMovieNativeAd(this, ****(広告枠ID)****, 320, 180);
// 読み込み通知リスナーをセット
mNativeAd.setAdfurikunNativeAdLoadListener(mLoadListener);
// 再生通知リスナーをセット
mNativeAd.setAdfurikunNativeAdVideoListener(mVideoListener);
// 動画ネイティブ広告ビューを貼る
containerView.addView(mNativeAd.getNativeAdView());
}
●ライフサイクル毎の処理
@Override
protected void onResume() {
super.onResume();
// SDKの処理を再開
mNativeAd.resume();
}
@Override
protected void onPause() {
super.onPause();
// SDKの処理を一時停止
mNative.pause();
}
●読み込み・動画再生・サイズ変更
private void load() {
// 広告を読み込み
mNativeAd.load();
}
private void play() {
// 広告を再生
mNativeAd.play();
}
private void changeAdSize(int width, int height) {
// 広告サイズを変更
mNativeAd.changeAdSize(width, height);
}
●読み込み通知を受け取る
AdfurikunMovieNativeAdInfo mNativeAdInfo;
int mLoadRetryCount = 0;
// 状態通知リスナーで通知を受ける
AdfurikunNativeAdLoadListener mListener = new AdfurikunNativeAdLoadListener() {
@Override
public void onNativeAdLoadFinish(AdfurikunMovieNativeAdInfo adInfo, String appId) {
// 広告情報を取得する
mNativeAdInfo = adInfo;
}
@Override
public void onNativeAdLoadError(AdfurikunMovieError errorObject, String appId) {
// エラーの確認および広告表示のリトライ処理
if (mLoadRetryCount < 5) {
mNativeAd.load();
}
mLoadRetryCount++;
}
.....
}
1-5. 実装の際の注意点
動画ネイティブ広告を表示するActivityに関して
※AndroidManifest.xmlの動画ネイティブ広告を表示するActivityの項目に、以下の内容を設定してください。
android:hardwareAccelerated="true"
広告のサイズの目安に関して
広告の視認性確保のため、以下を目安に実装をお願いします。
- 縦画面: 動画広告の横幅が画面横幅の50%以上であること
- 横画面: 動画広告の横幅が画面横幅の25%以上であること
※上記基準を下回る場合は、広告の配信が停止される可能性がございますので、ご了承ください。
複数表示に関して
- 広告枠IDを使いまわすことも可能ですが、1画面で1箇所の設置を推奨します。
- また、設置箇所ごとのレポートは参照できず合算されます。
- 同一ページや1アプリ内で複数設置する場合は、メモリー負荷や通信量を抑制するため、
不要なインスタンスは破棄することを推奨します。
1-6. ADNW毎の仕様
ADNW | 複数枠 | 属性 |
---|---|---|
AppLovin | X | タイトル:◯ 説明文:◯ |
Five | ◯ | タイトル:X 説明文:X |
Nend | ◯ | タイトル:◯ 説明文:△ |
AdCorsa | ◯ | タイトル:◯ 説明文:X |
※Nendのdescは100文字を超える場合があります。用途に合わせて表示ください。