動画ネイティブ広告(API) 実装方法
①アドフリくん動画リワードSDK導入の後、ADFmyMovieNative.h
をインポートします。
#import <ADFMovieReward/ADFmyMovieNative.h>
②利用するアドネットワークのSDKをプロジェクトにimportします。
※各アドネットワークの導入方法については、「アドネットワーク別 導入方法」を参照ください。
③サポート対象のOSバージョンかADFmyMovieNative
クラスの下記のstaticメソッドで事前に確認可能です。
+ (BOOL)isSupportedOSVersion;
④アドフリくん管理画面で発行された広告枠IDを指定してADFmyMovieNative
クラスのinitializeWithAppID:
メソッドを呼び、アドフリくんサーバから広告枠の設定情報を取得します。
※広告の準備にある程度時間を要するためapplication:didFinishLaunchingWithOptions:
等での実行をお勧めします。
+ (void)initializeWithAppID:(NSString *)appID;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
⑤各アドネットワークへ広告の取得リクエストを行います。取得の成功失敗をコールバックで受け取るためにloadAndNotifyTo:
メソッドの引数にデリゲートを指定します。
動画ネイティブのインスタンスの受け取り
+ (ADFmyMovieNative *)getInstance:(NSString *)appID;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
アドネットワークから広告の読み込み開始
- (void)loadAndNotifyTo:(id<ADFmyMovieNativeDelegate>)delegate;
パラメータ | 説明 |
---|---|
delegate |
デリゲートオブジェクト |
⑥広告の取得状況に関する通知を受け取りたいクラスに下記デリゲートを実装します。
ADFmyMovieNativeDelegate
正常系のイベント
- (void)onNativeMovieAdLoadFinish:(ADFMovieNativeAdInfo *)info appID:(NSString *)appID;
広告の取得に成功した場合にメインスレッドでコールバックされます。ADFMovieNativeAdInfo
クラスが持っている広告情報を使って広告を表示してください。
パラメータ | 説明 |
---|---|
info |
広告の情報を格納したオブジェクト |
appID |
対象の広告枠ID |
ADFMovieNativeAdInfo
プロパティ | 型 | Null可能 | 説明 |
---|---|---|---|
title |
NSString |
Null可能 | 広告のタイトル |
desc |
NSString |
Null可能 | 広告の説明文 |
mediaView |
ADFMediaView |
動画広告のView、アスペクト比が16:9の動画になります |
異常系のイベント
- (void)onNativeMovieAdLoadError:(ADFMovieError *)error appID:(NSString *)appID;
広告の取得に失敗した場合にメインスレッドでコールバックされます。エラーの詳細についてはADFMovieError
クラスを参照してください。
パラメータ | 説明 |
---|---|
error |
エラー内容を格納したオブジェクト |
appID |
対象の広告枠ID |
エラーコードの詳細
タイプ | コード | 内容 |
---|---|---|
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 | その他の予期せぬエラーが発生した場合 |
⑦ ADFMovieNativeAdInfo
のmediaView
を画面上好きなところに張り付き、必要なサイズに変更し、再生する
//サイズを設定
self.nativeAdInfo.mediaView.frame = self.containerView.bounds;
[self.containerView addSubview:self.nativeAd.mediaView];
//動画再生状況のdelegate
self.nativeAd.mediaView.mediaViewDelegate = self;
//動画を再生
[self.nativeAdInfo playMediaView];
ADFMediaViewDelegate
mediaView
のmediaViewDelegate
を設定すると、動画の再生状況確認することができます
正常系のイベント
- (void)onADFMediaViewPlayStart;
- (void)onADFMediaViewPlayFinish;
異常系のイベント
- (void)onADFMediaViewPlayFail;
実装例(詳細はサンプルアプリをご参照ください)
● アプリ起動 〜 事前準備開始
#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.nativeAd.mediaView.frame = self.containerView.bounds;
[self.containerView addSubview:self.nativeAd.mediaView];
self.nativeAd.mediaView.mediaViewDelegate = self;
[self.nativeAd playMediaView];
}
● 動画の再読込み:既存の動画広告のViewをメモリから解除
@interface ViewController()<ADFmyMovieNativeDelegate>
@property (nonatomic) ADFMovieNativeAdInfo *nativeAdInfo;
@end
@implementation ViewController
- (void)reloadNativeAd {
if (self.nativeAdInfo) {
[self.nativeAdInfo.mediaView removeFromSuperView];
self.nativeAdInfo.mediaView = nil;
self.nativeAdInfo = nil;
[[ADFmyMovieNative getInstance:@”広告枠ID”] loadAndNotifyTo:self];
}
}
実装の際の注意点
動画の読み込みに関して
初回の動画の読み込みには時間がかかりますので、アプリ起動時(AppDelegateのdidFinishLaunchingWithOptions:
など)に事前にconfigureWithAppID:
を呼び出して広告の設定情報をあらかじめ取得しておくと、広告を表示したい画面でloadAndNotifyTo:
を呼び出す際に広告の読み込みがスムーズになります。
サイズ目安について
広告の視認性確保のため、以下を目安に実装をお願いします。
- 縦画面: 動画広告の横幅が画面横幅の50%以上であること
- 横画面: 動画広告の横幅が画面横幅の25%以上であること
※上記基準を下回る場合は、広告の配信が停止される可能性がございますので、ご了承ください。
動画案件更新について
- 別の広告動画を表示するには、新たに
動画nativeをリクエスト(loadAndNotifyTo)
する必要があります。 - ページを切り替えるタイミングで
loadAndNotifyTo
を呼び出すことをおすすめします。
複数表示について
- 1画面で1箇所の設置を推奨します。
- 違いページに同一枠IDを利用するのは問題ありません。
- 同じページに複数動画Nativeを利用したい場合は、数に応じて複数IDを利用してください。
1画面で広告を再読込みする場合
1画面で広告表示後、再度Loadをして違う広告を表示するときには既存の動画広告表示用のViewをメモリから解除する必要があります。 詳しい内容は実装例を参考してください。