動画ネイティブ広告(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 |
対象の広告枠ID |
⑤各アドネットワークへ広告の取得リクエストを行います。ADFmyMovieNativeAdView
のinitWithAppID:layoutPattern:
メソッドでインスタンスを作成しloadAndNotifyTo:
メソッドを実行します。広告取得の成功・失敗をコールバックで受け取るためにデリゲートを指定します。
動画ネイティブView広告のインスタンスの作成
- (void)initWithAppID:(NSString *)appID layoutPattern:(ADFMovieNativeAdLayoutPattern)layoutPattern;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
layoutPattern |
広告のレイアウトパターン |
アドネットワークから広告の読み込み開始
- (void)loadAndNotifyTo:(id<ADFmyMovieNativeAdViewDelegate>)delegate;
パラメータ | 説明 |
---|---|
delegate |
デリゲートオブジェクト |
⑥広告の取得状況に関する通知を受け取りたいクラスに下記デリゲートを実装します。
ADFmyMovieNativeAdViewDelegate
正常系のイベント
- (void)onNativeMovieAdViewLoadFinish:(NSString *)appID;
広告の取得に成功した場合にメインスレッドでコールバックされます。このコールバックが実行された時点で広告のレイアウトまで完了します。あとは動画を再生したい任意のタイミングでplayVideo
メソッドを呼び出してください。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
異常系のイベント
- (void)onNativeMovieAdViewLoadError:(ADFMovieError *)error appID:(NSString *)appID;
広告の取得に失敗した場合にメインスレッドでコールバックされます。エラーの詳細についてはADFMovieError
を参照してください。
パラメータ | 説明 |
---|---|
error |
エラー内容を格納したオブジェクト |
appID |
対象の広告枠ID |
⑦広告の取得が完了したら、任意のタイミングでplayVideo
を実行して動画広告の再生を開始することができます。再生を開始した時点でインプレッションが発生します。動画の一時停止をするにはpauseVideo
が利用できます。
※初回の動画再生はplayVideo
メソッドを実行しないと始まらないので注意してください。
- (void)playVideo;
- (void)pauseVideo;
⑧広告の再生状況に関する通知を受け取ることも可能です。下記のメソッドを利用して通知を受け取りたいクラスをセットして、そのクラスにADFmyNativeAdViewVideoDelegate
のデリゲートメソッドを実装してください。
広告の再生状況を通知するデリゲートオブジェクトをセット
- (void)setVideoDelegate:(id<ADFmyNativeAdViewVideoDelegate>)delegate;
ADFmyNativeAdViewVideoDelegate
広告の視聴開始
- (void)onNativeMovieAdViewPlayStart:(NSString *)appID;
動画案件の場合は動画の再生開始、静止画案件の場合は静止画の表示のタイミングにメインスレッドでコールバックされます。
動画案件の場合はリプレイ時にもコールバックされます。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
広告の視聴終了
- (void)onNativeMovieAdViewPlayFinish:(NSString *)appID isVideo:(BOOL)isVideo;
動画案件の場合は動画の再生終了、静止画案件の場合は静止画の表示のタイミングにメインスレッドでコールバックされます。
動画案件の場合はリプレイ時にもコールバックされます。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
isVideo |
表示中の案件が動画案件か静止画案件か |
広告の視聴失敗
- (void)onNativeMovieAdViewPlayFail:(NSString *)appID error:(ADFMovieError *)error;
広告の視聴に失敗した場合にメインスレッドでコールバックされます。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
error |
エラー内容を格納したオブジェクト |
エラーコードの詳細
タイプ | コード | 内容 |
---|---|---|
ADFMovieError_NoStock |
0 | 広告の在庫がない場合 |
ADFMovieError_NetworkDisconnect |
1 | オフラインまたはフライトモードの場合 |
ADFMovieError_InvalidAppId |
2 | 広告IDが登録されている内容と異なる場合 |
ADFMovieError_ApiRequestFailure |
3 | リクエストが失敗した場合 |
ADFMovieError_UnsupportedOSVersion |
4 | サポートしないOSバージョンの場合 |
ADFMovieError_PlayerItemLoadFailure |
5 | 広告の読み込みが失敗した場合 |
ADFMovieError_PlayerItemPlayFailure |
6 | 広告の再生が失敗した場合 |
ADFMovieError_Other |
7 | その他の予期せぬエラーが発生した場合 |
案件の自動更新機能について
動画ネイティブ広告(View)には案件の自動更新機能があります。ADFmyMovieNativeAdView
インスタンスのautoLoad
プロパティをYESにするだけで設定完了です。autoLoad
プロパティはデフォルトYESになっているので、案件を自動更新したくない場合は明示的にautoLoad
プロパティをNOに設定してください。
プロパティ | 型 | デフォルト値 | 説明 |
---|---|---|---|
autoLoad | BOOL |
YES | 案件の自動更新機能のON/OFF |
必要になった時にYES/NOを設定することで、任意のタイミングでON/OFFが切り替えられます。自動更新時に案件が切れた場合は、次の案件が取得できるまで再生中の動画を継続して再生し続けます。
案件の自動更新の間隔は60秒です。
動画の自動停止機能について
動画ネイティブ広告(View)は、広告Viewの可視域が60%以上の時のみ動画を再生し、60%未満の場合は自動で再生を停止します。したがってスクロールなどで広告が隠れたり別の画面に遷移するなどして、広告の見えてる部分が60%未満になったタイミングで動画の再生が自動で停止され、再び60%以上表示されたタイミングで自動的に再生が再開されます。ただし例外として、pauseVideo
メソッドで動画の再生が一時停止されてる場合は、60%以上が画面に表示されていても自動で再生は開始しません。また、動画の停止中は案件の自動更新も同じく一時的に停止します。
実装例(詳細はサンプルアプリをご参照ください)
● アプリ起動 〜 事前準備開始
#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 {
//動画ネイティブ広告(View)の初期化
self.nativeAdView = [[ADFmyMovieNativeAdView alloc] initWithAppID:MOVIE_NATIVE_APPID
layoutPattern:ADFMovieNativeAdLayoutPattern_Default];
//自動ロードをON(デフォルトONです)
self.nativeAdView.autoLoad = YES;
//動画ネイティブ広告の読み込み開始
[self.nativeAdView loadAndNotifyTo:self];
}
#pragma mark - ADFmyMovieNativeAdViewDelegate
//広告の取得&動画再生成功のコールバック
- (void)onNativeMovieAdViewLoadFinish:(NSString *)appID {
//広告の表示など
[self.nativeAdView getAdView].frame = CGRectMake(0, 0, 320, 180);
[self.view addSubview:[self.nativeAdView getAdView]];
//動画の再生状況を確認するためにデリゲートをセット
[self.nativeAdView setVideoDelegate:self];
//動画の再生開始
[self.nativeAdView playVideo];
}
//広告の取得失敗のコールバック
- (void)onNativeMovieAdViewLoadError:(ADFMovieError *)error appID:(NSString *)appID {
//エラーの確認、再リクエストなど
}
#pragma mark - ADFmyNativeAdViewVideoDelegate
//広告の再生開始のコールバック
- (void)onNativeMovieAdViewPlayStart:(NSString *)appID {
//広告の視聴開始
}
//広告の再生終了のコールバック
- (void)onNativeMovieAdViewPlayFinish:(NSString *)appID isVideo:(BOOL)isVideo {
//広告の視聴終了
}
//広告の再生失敗のコールバック
- (void)onNativeMovieAdViewPlayFail:(NSString *)appID error:(ADFMovieError *)error {
//エラーの確認、広告をViewから削除するなど
}