Skip to content

複数メディアIDの実装ガイド

moe-ichihara edited this page Nov 21, 2019 · 2 revisions

1. maio SDK の導入(既に導入済みの場合は不要です)

2. 広告の表示方法

2つ以上のメディアID を使用する場合は、startWithNonDefaultMediaId:delegate: で初期化します。
以下は、2つのメディアID を使用するサンプルコードです。

  • startWithMediaId:delegate:startWithNonDefaultMediaId:delegate: は一緒に使用できます。(startWithMediaId:delegate: のサンプルコードはこちら
  • startWithNonDefaultMediaId:delegate: は複数使用できますが、startWithMediaId:delegate: は複数使用できません。

ゾーンを複数使用する場合は、再生時やデリゲート使用時にゾーンIDを確認して実装するようにしてください。

この例では1つの ViewController が MaioDelegateの通知を受け、2つの MaioInstance を保持します。

// ViewController.h

#import <Maio/Maio.h>

@interface ViewController : UIViewController <MaioDelegate>

// MaioInstanceを保持するためのプロパティを宣言します
@property (nonatomic) MaioInstance *maioInstance;
@property (nonatomic) MaioInstance *maioInstance2;

@end

初期化を行うコードを追加します。

// AppDelegate.m

#import <Maio/Maio.h>

@implementation AppDelegate

// maio から発行されるメディアIDに差し替えてください
NSString * const MAIO_MEDIA_ID = @"DemoPublisherMedia";
NSString * const MAIO_MEDIA_ID2 = @"DemoPublisherMedia2";

- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {
    ViewController *viewController = (ViewController *)self.window.rootViewController;
    
    // Maio の初期化を開始します
    viewController.maioInstance = [Maio startWithNonDefaultMediaId:MAIO_MEDIA_ID delegate:viewController];
    viewController.maioInstance2 = [Maio startWithNonDefaultMediaId:MAIO_MEDIA_ID2 delegate:viewController];

}

@end

再生ボタンの実装と、動画再生後のリワードを付与する処理を実装します。

// ViewController.m

@implementation ViewController

// ... 略 ...

// maio から発行されるゾーンIDに差し替えてください
NSString * const MAIO_ZONE_ID = @"DemoPublisherZone";
NSString * const MAIO_ZONE_ID2 = @"DemoPublisherZone3";

// ストーリーボード上のこのメソッドに紐付けられたボタンがタップされた際に呼び出されます
- (IBAction) startButton : (id) sender {
    // canShowプロパティがYESの場合に、動画広告を表示します
    if([self.maioInstance canShowAtZoneId:MAIO_ZONE_ID]) {
        [self.maioInstance showAtZoneId:MAIO_ZONE_ID vc:self];
    }
}

- (IBAction) start2Button : (id) sender {
    // canShowプロパティがYESの場合に、動画広告を表示します
    if([self.maioInstance2 canShowAtZoneId:MAIO_ZONE_ID2]) {
        [self.maioInstance2 showAtZoneId:MAIO_ZONE_ID2 vc:self];
    }
}

// 広告表示完了時に呼び出すデリゲートを設定します
// これによって、maio SDK からのイベント通知を取得することが可能になります
// 本メソッドは、ユーザが動画を見終わった直後に呼び出されます  
// ”skipped”が”NO”であれば最後まで動画が再生された事を示しますので、  
// その際にユーザに報酬を付与する事が可能になります  
- (void) maioDidFinishAd: (NSString *) zoneId 
                playtime: (NSInteger) playtime
                 skipped: (BOOL) skipped 
             rewardParam: (NSString *) rewardParam {
    // ユーザへのリワード付与処理

}

/**
  * 広告の配信可能状態が変更された際に呼ばれます
  *
  * @param zoneId NSString 広告の配信可能状態が変更されたゾーンの識別子
  * @param BOOL newValue 変更後のゾーンの状態 ※YESの場合配信可能
  */
- (void) maioDidChangeCanShow: (NSString *) zoneId newValue: (BOOL) newValue {
    // 広告が表示可能ならトリガーを有効化
    if ([MAIO_ZONE_ID isEqualToString:zoneId]) {
        self.startButton.enabled = newValue;
    }
    else if ([MAIO_ZONE_ID2 isEqualToString:zoneId]) {
        self.start2Button.enabled = newValue;
    }
}

// ... 略 ...

@end

デリゲートについて

デリゲート使用時はゾーンIDを確認して、正しく実装を行ってください。
デリゲートの設定方法に関しては、こちらを参照ください。