動画ネイティブ広告(FLEX)
実装方法
①動画ネイティブ広告(FLEX)の広告枠が必要となります。
アドフリくん管理画面の「広告枠」タブ > 「広告枠 追加」 > 「バナー種類」で「動画ネイティブ広告(FLEX)」を選択します。
②アドフリくん動画リワードSDK導入の後、ADFmyMovieNativeAdFlex.h
をインポートします。
#import <ADFMovieReward/ADFmyMovieNativeAdFlex.h>
③利用するアドネットワークのSDKをプロジェクトにimportします。
※各アドネットワークの導入方法については、「アドネットワーク別 導入方法」を参照ください。
④サポート対象のOSバージョンかは、ADFmyMovieNativeAdFlex
クラスの下記のstaticメソッドで事前に確認可能です。
+ (BOOL)isSupportedOSVersion
⑤アドフリくん管理画面で発行された広告枠IDを指定してADFmyMovieNativeAdFlex
クラスのinitWithAppID: viewController:
メソッドを呼び、広告枠の設定情報を取得します。
※広告の準備にある程度時間を要するためapplication:didFinishLaunchingWithOptions:
等での実行をお勧めします。
+ (void)initWithAppID:(NSString *)appID viewController:(UIViewController*)viewController;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
viewController |
RootViewcontrollerなど、常に存在するViewController |
⑥各アドネットワークへ広告の取得リクエストを行います。ADFmyMovieNativeAdFlex
のgetInstance:delegate:
メソッドでインスタンスを作成し、広告取得の成功・失敗をコールバックで受け取るためにデリゲートを指定します。
動画ネイティブ広告(FLEX)のインスタンスの作成
+ (ADFmyMovieNativeAdFlex *)getInstance:(NSString *)appID delegate:(id<ADFmyMovieRewardDelegate>)delegate;
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
delegate |
デリゲートオブジェクト |
⑦広告の取得が完了したら、任意のタイミングでplay
を実行して動画広告の再生を開始することができます。再生を開始した時点でインプレッションが発生します。
- (void)play;
⑧画面遷移など任意のタイミングで広告の表示を終了したい場合は、以下の関数を実行してください。
- (void)finish;
⑨広告の取得状況に関する通知を受け取りたいクラスに下記デリゲートを実装します。
ADFmyMovieRewardDelegate
広告の表示準備完了
- (void)AdsFetchCompleted:(NSString *)appID isTestMode:(BOOL)isTestMode_inApp
広告の取得に成功した場合にメインスレッドでコールバックされます。このコールバックが実行された時点で広告のレイアウトまで完了します。あとは動画を再生したい任意のタイミングでplay
メソッドを呼び出してください。
パラメータ | 説明 |
---|---|
appID |
対象の広告枠ID |
広告の視聴開始
- (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!) {
// 動画広告の再生エラー
}
}