動画ネイティブ広告(FLEX)
実装方法
①動画ネイティブ広告(FLEX)の広告枠が必要となります。
アドフリくん管理画面の「広告枠」タブ > 「広告枠 追加」 > 「バナー種類」で「動画ネイティブ広告(FLEX)」を選択します。
②アドフリくん動画リワードSDK導入の後、ADFmyMovieNativeAdFlex.h
をインポートします。
#import <ADFMovieReward/ADFmyMovieNativeAdFlex.h>
③利用するアドネットワークのSDKをプロジェクトにimportします。
※各アドネットワークの導入方法については、「CocoaPodsを利用」または「手動で導入する手順」を参照ください。
④サポート対象のOSバージョンかは、ADFmyMovieNativeAdFlex
クラスの下記のstaticメソッドで事前に確認可能です。
+ (BOOL)isSupportedOSVersion
⑤アドフリくん管理画面で発行された広告枠IDを指定してADFmyMovieNativeAdFlex
クラスのinitializeWithAppID: viewController:
メソッドを呼び、広告枠の設定情報を取得します。
※広告の準備にある程度時間を要するためapplication:didFinishLaunchingWithOptions:
等での実行をお勧めします。
+ (void)initializeWithAppID:(NSString *)appID viewController:(UIViewController*)viewController;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
⑥各アドネットワークへ広告の取得リクエストを行います。ADFmyMovieNativeAdFlex
のgetInstance:delegate:
メソッドでインスタンスを作成し、広告取得の成功・失敗をコールバックで受け取るためにデリゲートを指定します。
動画ネイティブ広告(FLEX)のインスタンスの作成
+ (ADFmyMovieNativeAdFlex *)getInstance:(NSString *)appID delegate:(id<ADFmyMovieRewardDelegate>)delegate;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
delegate |
デリゲートオブジェクト |
⑦広告枠が新ローディングモードの場合、広告表示準備を明示的に行う必要があります。
- (void)load;
load
メソッドを呼び出すとそのタイミングで各アドネットワークへの表示準備開始をします。
load()関数を呼び出さないと表示準備が行われません。
⑧広告の取得が完了したら、任意のタイミングでplay
を実行して動画広告の再生を開始することができます。再生を開始した時点でインプレッションが発生します。
- (void)play;
- (void)playWithPresentingViewController:(UIViewController *)viewController;
パラメータ | 説明 |
---|---|
viewController |
アプリ最前面viewのUIViewController、多くの場合は「self」 |
⑨画面遷移など任意のタイミングで広告の表示を終了したい場合は、以下の関数を実行してください。
- (void)finish;
⑩広告の取得状況に関する通知を受け取りたいクラスに下記デリゲートを実装します。
ADFmyMovieRewardDelegate
広告の表示準備完了
- (void)AdsFetchCompleted:(NSString *)appID isTestMode:(BOOL)isTestMode_inApp
広告の取得に成功した場合にメインスレッドでコールバックされます。このコールバックが実行された時点で広告のレイアウトまで完了します。あとは動画を再生したい任意のタイミングでplay
メソッドを呼び出してください。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
■ 広告表示準備失敗時のイベントの受け取り
- (void)AdsFetchFailed:(NSString *)appID error:(NSError *)error;
パラメータ | 説明 |
---|---|
appID |
広告枠ID |
error |
エラー情報 |
error.code | 説明 |
---|---|
ADF_FETCH_ERROR_CODE_OUTOFSTOCK | ADNWから在庫が返却されなかった場合 |
ADF_FETCH_ERROR_CODE_NOADNETWORK | 配信設定において利用可能なADNWが一つもなかった場合 |
ADF_FETCH_ERROR_CODE_ALREADY_LOADING | 前回のLoadingがまだ完了してない場合 |
広告の視聴開始
- (void)AdsDidShow:(NSString *)appID adNetworkKey:(NSString *)adNetworkKey
動画の表示を開始した時に呼ばれます
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
adNetworkKey |
再生を開始したアドネットワークのアドネットワークキー |
広告の視聴終了
- (void)AdsDidCompleteShow:(NSString *)appID
動画広告の再生が完了した時に呼ばれます
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
広告の視聴失敗
- (void)AdsPlayFailed:(NSString *)appID
広告の視聴に失敗した場合にメインスレッドでコールバックされます。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
実装例(詳細はサンプルアプリをご参照ください)
Objective-C
● アプリ起動 〜 事前準備開始
#import <ADFMovieReward/ADFmyMovieNativeAdFlex.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// OSがサポートバージョン以上だったら、広告枠の情報取得開始
if ([ADFmyMovieNativeAdFlex isSupportedOSVersion]) {
[ADFmyMovieNativeAdFlex initWithAppID:@"広告枠ID" viewController:self.window.rootViewController];
}
}
● デリゲート実装 〜 広告の取得開始 〜 広告の表示
@interface MovieNativeAdFlexViewController ()<ADFmyMovieRewardDelegate>
@property (nonatomic, strong)ADFmyMovieNativeAdFlex *movieNativeAdFlex;
- (void)viewDidLoad {
[super viewDidLoad];
if (![ADFmyMovieNativeAdFlex isSupportedOSVersion]) {
// アドフリくんの管理画面で発行された広告枠IDを設定してください。
_movieNativeAdFlex = [ADFmyMovieNativeAdFlex getInstance:@"広告枠ID" delegate:self];
}
}
- (IBAction) startPopupAd:(id)sender {
//広告再生の準備が出来たか?
if ( self.movieNativeAdFlex != nil && [self.movieNativeAdFlex isPrepared] ) {
// 再生開始
[self.movieNativeAdFlex play];
}
}
- (IBAction)finishAd:(id)sender {
if (self.movieNativeAdFlex) {
// 再生終了
[self.movieNativeAdFlex finish];
}
}
#pragma mark - Delegate
- (void)AdsFetchCompleted:(NSString *)appID isTestMode:(BOOL)isTestMode_inApp {
// 動画広告の読み込みが完了した
}
- (void)AdsDidShow:(NSString *)appID adNetworkKey:(NSString *)adNetworkKey {
// 動画の表示を開始した
}
- (void)AdsDidCompleteShow:(NSString *)appID {
// 動画広告を最後まで観た
}
- (void)AdsDidHide:(NSString *)appID {
// 動画広告を閉じた
}
- (void)AdsPlayFailed:(NSString *)appID {
// 動画広告再生エラー
}
Swift
● アプリ起動 〜 事前準備開始
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if ADFmyMovieNativeAdFlex.isSupportedOSVersion() {
// 広告枠IDを指定し、OSがサポートバージョン以上だったら、動動画読込を開始
if let vc = self.window?.rootViewController {
ADFmyMovieNativeAdFlex.initWithAppID("広告枠ID", viewController: vc)
}
}
return true
}
● デリゲート実装 〜 インスタンス受け取り 〜 再生開始
class SampleViewController: UIViewController, ADFmyMovieRewardDelegate {
private var ad: ADFmyMovieNativeAdFlex? = nil
override func viewDidLoad() {
// デリゲートをセットしてADFmyMovieNativeAdFlexのインスタンスを取得する
ad = ADFmyMovieNativeAdFlex.getInstance("広告枠ID", delegate: self)
}
@IBAction func didTapPlayButton(_ sender: Any) {
if let nativeAdFlex = ad, nativeAdFlex.isPrepared() {
// 再生開始
nativeAdFlex.play()
}
}
@IBAction func didTapFinishButton(_ sender: Any) {
if let nativeAdFlex = ad {
// 再生終了
nativeAdFlex.finish()
}
}
func adsFetchCompleted(_ appID: String!, isTestMode isTestMode_inApp: Bool) {
// 動画広告の読み込みが完了した
}
func adsDidShow(_ appID: String!, adNetworkKey: String!) {
// 動画広告の表示を開始した
}
func adsDidCompleteShow(_ appID: String!) {
// 動画広告を最後まで観た
}
func adsDidHide(_ appID: String!) {
// 動画広告を閉じた
}
func adsPlayFailed(_ appID: String!) {
// 動画広告の再生エラー
}
}