動画ネイティブ
動画ネイティブ広告専用の広告枠が必要となります。
アドフリくん管理画面の「広告枠」タブ > 「広告枠 追加」 > 「バナー種類」で「動画ネイティブ広告」を選択します。
アドフリくん動画ネイティブ広告には2種類の実装方法があります。ご利用用途に合わせてどちらの実装方法を使うかお選び頂けます。どちらの実装方法もアスペクト比16:9の動画広告を提供します。
1. 動画ネイティブ広告(API)
ネイティブ広告の情報を取得するタイプの実装方法です。取得した広告情報を利用して自分好みに広告をレイアウトしたい場合はこちらの実装方法をご利用ください。
2. 動画ネイティブ広告(View)
ネイティブ広告の情報の取得とレイアウトまでSDK側で行うタイプの実装方法です。ユーザは取得したViewを表示するだけで広告を表示することができるため、実装の手間を省くことができます。
1-1. 動画ネイティブ広告(API) 実装方法
①アドフリくん動画リワードSDK導入の後、ADFmyMovieNative.h
をインポートします。
#import <ADFMovieReward/ADFmyMovieNative.h>
②利用するアドネットワークのSDKをプロジェクトにimportします。
※各アドネットワークの導入方法については、「アドネットワーク別 導入方法」を参照ください。
③サポート対象のOSバージョンかは、ADFmyMovieNative
クラスの下記のstaticメソッドで事前に確認可能です。
+ (BOOL)isSupportedOSVersion;
④アドフリくん管理画面で発行された広告枠IDを指定してADFmyMovieNative
クラスのconfigureWithAppID:
メソッドを呼び、アドフリくんサーバから広告枠の設定情報を取得します。
※application:didFinishLaunchingWithOptions:
等、アプリ開始直後に極力呼び出して下さい。
+ (void)configureWithAppID:(NSString *)appID;
引数 | 型 | 説明 |
---|---|---|
appID | NSString |
対象の広告枠ID |
⑤各アドネットワークへ広告の取得リクエストを行います。取得の成功失敗をコールバックで受け取るためにloadAndNotifyTo:
メソッドの引数にデリゲートを指定します。
動画ネイティブのインスタンスの受け取り
+ (ADFmyMovieNative *)getInstance:(NSString *)appID;
引数 | 型 | 説明 |
---|---|---|
appID | NSString |
対象の広告枠ID |
アドネットワークから広告の読み込み開始
- (void)loadAndNotifyTo:(id<ADFmyMovieNativeDelegate>)delegate;
引数 | 型 | 説明 |
---|---|---|
delegate | id<ADFmyMovieNativeDelegate> |
デリゲートオブジェクト |
⑥広告の取得状況に関する通知を受け取りたいクラスに下記デリゲートを実装します。
ADFmyMovieNativeDelegate
正常系のイベント
- (void)onNativeMovieAdLoadFinish:(ADFMovieNativeAdInfo *)info appID:(NSString *)appID;
広告の取得に成功した場合にメインスレッドでコールバックされます。ADFMovieNativeAdInfo
クラスが持っている広告情報を使って広告を表示してください。
引数 | 型 | 説明 |
---|---|---|
info | ADFMovieNativeAdInfo |
広告の情報を格納したオブジェクト |
appID | NSString |
対象の広告枠ID |
ADFMovieNativeAdInfo
プロパティ | 型 | 説明 |
---|---|---|
title | NSString |
広告のタイトル |
desc | NSString |
広告の説明文 |
videoUrl | NSURL |
広告の動画URL(アスペクト比が16:9の動画になります) |
imageUrl | NSURL |
広告の画像URL(動画がない案件もたまにあります。その案件の場合はこの画像を表示してください。実装例はサンプルアプリをご覧ください。) |
異常系のイベント
- (void)onNativeMovieAdLoadError:(ADFMovieError *)error appID:(NSString *)appID;
広告の取得に失敗した場合にメインスレッドでコールバックされます。エラーの詳細についてはADFMovieError
クラスを参照してください。
引数 | 型 | 説明 |
---|---|---|
error | ADFMovieError |
エラー内容を格納したオブジェクト |
appID | NSString |
対象の広告枠ID |
⑦広告の再生を開始したらインプレッションを計測します。広告の取得成功時にコールバックで取得できるADFMovieNativeAdInfo
オブジェクトのメソッドを利用して各種トラッキングを実行してください。
インプレッションを計測(必須)
- (void)trackImpression;
動画の再生開始を計測
- (void)trackMovieStart;
動画の再生終了を計測
- (void)trackMovieFinish;
広告のクリックの計測とクリックURLの表示(必須)
- (void)launchClickTarget;
実装例(詳細はサンプルアプリをご参照ください)
アプリ起動 〜 事前準備開始
#import <ADFMovieReward/ADFmyMovieNative.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//OSがサポートバージョン以上だったら、広告枠の情報取得開始
if ([ADFmyMovieNative isSupportedOSVersion]) {
[ADFmyMovieNative configureWithAppID:@”広告枠ID”];
}
}
デリゲート実装 〜 広告の取得開始 〜 広告の表示
@interface ViewController()<ADFmyMovieNativeDelegate>
@property (nonatomic) ADFMovieNativeAdInfo *nativeAdInfo;
@end
@implementation ViewController
- (void)viewDidLoad {
//広告の取得を開始
[[ADFmyMovieNative getInstance:@”広告枠ID”] loadAndNotifyTo:self];
}
#pragma mark - ADFmyMovieNativeDelegate
//広告の取得成功のコールバック
- (void)onNativeMovieAdLoadFinish:(ADFMovieNativeAdInfo *)info appID:(NSString *)appID {
self.nativeAdInfo = info;
//広告を表示する処理を実装
}
//広告の取得失敗のコールバック
- (void)onNativeMovieAdLoadError:(ADFMovieError *)error appID:(NSString *)appID {
//エラーの確認、広告取得のリトライなど
}
動画の再生開始〜広告のタップ〜動画の再生終了
@implementation ViewController
- (void)onNativeMovieAdLoadFinish:(ADFMovieNativeAdInfo *)info appID:(NSString *)appID {
self.nativeAdInfo = info;
//広告を表示する処理を実装
//広告を表示したらインプレッションを計測
[self.nativeAdInfo trackImpression];
[self.nativeAdInfo trackMovieStart];
}
//広告のタップ時に実行される関数を想定
- (void)onTapNativeAd {
//広告のクリックを計測
[self.nativeAdInfo launchClickTarget];
}
//動画の再生終了時に実行される関数を想定
- (void)didFinishMovie {
//動画再生終了を計測
[self.nativeAdInfo trackMovieFinish];
}
実装の際の注意点
動画の読み込みに関して
初回の動画の読み込みには時間がかかりますので、アプリ起動時(AppDelegateのdidFinishLaunchingWithOptions:
など)に事前にconfigureWithAppID:
を呼び出して広告の設定情報をあらかじめ取得しておくと、広告を表示したい画面でloadAndNotifyTo:
を呼び出す際に広告の読み込みがスムーズになります。
トラッキングに関して
trackImpression
,trackMovieStart
に関しては、動画の再生開始時に呼ぶようにしてください。
trackMovieFinish
は、動画の再生終了時に呼ぶようにしてください。
1-2. 動画ネイティブ広告(View) 実装方法
①アドフリくん動画リワードSDK導入の後、ADFmyMovieNativeAdView.h
をインポートします。
#import <ADFMovieReward/ADFmyMovieNativeAdView.h>
②利用するアドネットワークのSDKをプロジェクトにimportします。
※各アドネットワークの導入方法については、「アドネットワーク別 導入方法」を参照ください。
③サポート対象のOSバージョンかは、ADFmyMovieNativeAdView
クラスの下記のstaticメソッドで事前に確認可能です。
+ (BOOL)isSupportedOSVersion
④アドフリくん管理画面で発行された広告枠IDを指定してADFmyMovieNativeAdView
クラスのconfigureWithAppID:
メソッドを呼び、広告枠の設定情報を取得します。
※application:didFinishLaunchingWithOptions:
等、アプリ開始直後に極力呼び出して下さい。
+ (void)configureWithAppID:(NSString *)appID
引数 | 型 | 説明 |
---|---|---|
appID | NSString |
対象の広告枠ID |
⑤各アドネットワークへ広告の取得リクエストを行います。ADFmyMovieNativeAdView
のinitWithAppID:layoutPattern:
メソッドでインスタンスを作成しloadAndNotifyTo:
メソッドを実行します。広告取得の成功・失敗をコールバックで受け取るためにデリゲートを指定します。
動画ネイティブView広告のインスタンスの作成
- (void)initWithAppID:(NSString *)appID layoutPattern:(ADFMovieNativeAdLayoutPattern)layoutPattern;
引数 | 型 | 説明 |
---|---|---|
appID | NSString |
対象の広告枠ID |
layoutPattern | ADFMovieNativeAdLayoutPattern |
広告のレイアウトパターン |
アドネットワークから広告の読み込み開始
- (void)loadAndNotifyTo:(id<ADFmyMovieNativeAdViewDelegate>)delegate;
引数 | 型 | 説明 |
---|---|---|
delegate | id<ADFmyMovieNativeAdViewDelegate> |
デリゲートオブジェクト |
⑥広告の取得状況に関する通知を受け取りたいクラスに下記デリゲートを実装します。
ADFmyMovieNativeAdViewDelegate
正常系のイベント
- (void)onNativeMovieAdViewLoadFinish:(NSString *)appID;
広告の取得に成功した場合にメインスレッドでコールバックされます。このコールバックが実行された時点で広告のレイアウトまで完了し、動画再生も自動で開始しています。
引数 | 型 | 説明 |
---|---|---|
appID | NSString |
対象の広告枠ID |
異常系のイベント
- (void)onNativeMovieAdViewLoadError:(ADFMovieError *)error appID:(NSString *)appID;
広告の取得に失敗した場合にメインスレッドでコールバックされます。エラーの詳細についてはADFMovieError
を参照してください。
引数 | 型 | 説明 |
---|---|---|
error | ADFMovieError |
エラー内容を格納したオブジェクト |
appID | NSString |
対象の広告枠ID |
実装例(詳細はサンプルアプリをご参照ください)
アプリ起動 〜 事前準備開始
#import <ADFMovieReward/ADFmyMovieNativeAdView.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//OSがサポートバージョン以上だったら、広告枠の情報取得開始
if ([ADFmyMovieNativeAdView isSupportedOSVersion]) {
[ADFmyMovieNativeAdView configureWithAppID:@”広告枠ID”];
}
}
デリゲート実装 〜 広告の取得開始 〜 広告の表示
@interface ViewController()<ADFmyMovieNativeAdViewDelegate>
@property (nonatomic) ADFmyMovieNativeAdView *nativeAdView;
@end
@implementation ViewController
- (void)viewDidLoad {
//広告の取得を開始
self.nativeAdView = [[ADFmyMovieNativeAdView alloc]
initWithAppID:MOVIE_NATIVE_APPID layoutPattern:ADFMovieNativeAdLayoutPattern_Default];
[self.nativeAdView loadAndNotifyTo:self];
}
#pragma mark - ADFmyMovieNativeAdViewDelegate
//広告の取得&動画再生成功のコールバック
- (void)onNativeMovieAdViewLoadFinish:(NSString *)appID {
//広告の表示など
self.nativeAdView.adView.frame = CGRectMake(0,0,320,180);
[self.view addSubview:self.nativeAdView.adView];
}
//広告の取得失敗のコールバック
- (void)onNativeMovieAdViewLoadError:(ADFMovieError *)error appID:(NSString *)appID {
//エラーの確認、再リクエストなど
}
実装の際の注意点
動画広告の切り替えに関して
表示中の広告を別の広告に切り替えたい場合は、表示中のADFmyMovieNativeAdView
インスタンスに対して、再度loadAndNotifyTo:
を呼び出してください。そうでない場合は、常に同じ広告が再生され続けます。
インプレッションの発生タイミング
インプレッションはADFmyMovieNativeAdViewDelegate
のonNativeMovieAdViewLoadFinish:
(動画再生成功のコールバック)が実行されたタイミングで自動的に発生します。動画リプレイ時には発生しません。
再生のタイミング
loadAndNotifyTo:
を呼び出して、ADFmyMovieNativeAdViewDelegate
のonNativeMovieAdViewLoadFinish:
(動画再生成功のコールバック)が実行されたタイミングで、動画の再生も自動的に開始されます。再生のタイミングを制御したい場合は、pauseVideo
で動画の再生を一時停止して、再生させたいタイミングでplayVideo
を呼び出してください。ただし前述したように、動画再生成功のコールバックが実行されたタイミングで自動的にインプレッションは発生してしまっているので、そちらを制御することは現状できません。(再生のタイミングでインプレッションが発生するように、以降のバージョンでは修正予定です)