Interstitial Integration For iOS - Hiroaki-Shinoda/Geniee-iOS-SDK GitHub Wiki

インタースティシャル広告の実装

インタースティシャル広告は、リッチ HTML5 等の全画面型広告、アプリの起動、動画のプレロール、ゲームのレベル読み込みなど、アプリの画面切り替え時に表示されます。

実装準備

インタースティシャル広告の実装準備は、下記スタートガイドより、
Geniee SDK をプロジェクトにインストール必要です。
スタートガイド

クラスとプロトコル

iOS インタースティシャル広告配信には、下記クラスを使用します。

  • GNInterstitial 非同期でインタースティシャル広告を取得、表示用クラス
  • GNInterstitialDelegate インタースティシャルサイクルイベント処理用プロトコル

インタースティシャル広告の初期化

  1. GNAdSDK.frameworkをプロジェクトに追加します。スタートガイド

  2. GNInterstitial.hをインポートします。

    #import <GNAdSDK/GNInterstitial.h>
  3. GNInterstitialDelegateプロトコルを採用します。

    @interface MyViewController : UIViewController<GNInterstitialDelegate>
    {
    }
  4. GNInterstitialの変数を宣言します。

    GNInterstitial *_interstitial;
  5. GNInterstitial のインスタンスを初期化します。

    _interstitial = [[GNInterstitial alloc] initWithID:@"YOUR_SSP_APP_ID"];

YOUR_SSP_APP_IDは、Geniee内での枠の管理IDを設定します。

  1. GNInterstitialのdelegateを設定します。
    インタースティシャル広告処理サイクルイベントのは、delegate経由で通知されます。
    GNInterstitialDelegateプロトコルを採用したインスタンス変数を設定します。

    _interstitial.delegate = self;
  2. GNInterstitialのrootViewControllerを設定します。

    _interstitial.rootViewController = self;
  3. GNInterstitial のインスタンスをリリースする際に、delegateをnilに設定します。

    - (void)dealloc
    {
        _interstitial.delegate = nil;
    }
  • MyViewControllerの実装例:

    // MyViewController.h
    
    #import <GNAdSDK/GNInterstitial.h>
    
    @interface MyViewController : UIViewController<GNInterstitialDelegate>
    {
       GNInterstitial *_interstitial;
    }
    @end
    //  MyViewController.m
    
    @implementation MyViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        _interstitial = [[GNInterstitial alloc] initWithID:@"YOUR_SSP_APP_ID"];
        _interstitial.delegate = self;
        _interstitial.rootViewController = self;
    }
    
    - (void)dealloc
    {
        _interstitial.delegate = nil;
    }
    @end

インタースティシャル広告のサイズ

300x250 の広告サイズを対応しています。

インタースティシャル広告のロード

インタースティシャル広告表示用タグを Ad サーバからロードします。
GNInterstitial は、表示前にプリロードし、広告の準備が完了した適切なタイミングで使用することをおすすめします。

  • ロード成功場合、delegateのonReceiveSettingコールバック関数で通知されます。

  • ロード失敗場合、delegateのonFailedToReceiveSettingコールバック関数で通知されます。

    [_interstitial load];

インタースティシャル広告の表示

インタースティシャルを表示する準備ができたら、表示する前に準備できているかどうかを確認します。

  • 次の例では、画面遷移時にインタースティシャルを表示します。

    - (void)showEventFunc
    {
        if (_interstitial.isReady) {
            [_interstitial show:self];
        }
    }
    • パラメータself:カレント画面のViewControllerの変数

インタースティシャル広告の背景透過

  • 管理画面より、広告の背景透過度を設定します。
  • 背景透過度を設定しでも透過しない場合、広告表示前に以下コードを追加します。
    UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
    rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
    
    [_interstitial show:self];

インタースティシャル広告の更新

新しいインタースティシャル広告の表示には、広告を再度ロードしてから表示する必要があります。

GNInterstitialDelegateプロトコル

  • GNInterstitialDelegateのコールバック関数実装し、広告処理サイクルイベントを受け取ります。

    @protocol GNInterstitialDelegate <NSObject>
    
    @required
    
    /// 広告データの読み込みが完了した時に送られます。
    - (void)onReceiveSetting;
    
    @optional
    
    /// ネットワークエラー等の原因で広告の読み込みに失敗した時に送られます。
    - (void)onFailedToReceiveSetting;
    
    /// インタースティシャル広告画面が閉じられる直後に送られます。
    - (void)onClose;
    
    /// 管理画面より、広告画面に設置したボタンがタップされ、
    /// インタースティシャル広告画面が閉じられる直後に送られます。
    /// タップされたボタンの番号は、`nButtonIndex`パラメータで通知されます。
    - (void)onButtonClick:(NSUInteger)nButtonIndex;
    
    @end

SwiftからiOS SDK の利用について

SwiftからiOS SDK (Objective-C) クラスを利用するには、Objective-C bridging headerと呼ばれるファイルに ヘッダファイルのインポート文を書くことで可能です。

  • <プロジェクト名>-Bridging-Header.hファイルをプロジェクトに追加します。

  • <プロジェクト名>-Bridging-Header.hファイルにインポート文を記述します。

    #import <GNAdSDK/GNInterstitial.h>
  • ファイル名をプロジェクトの「Build Settings」に設定します。
    設定には、プロジェクトルートでターゲットを選択し、「Build Settings」->「Swift Compiler - Code Generattion」->「Objective-C bridging header」に <プロジェクト名>-Bridging-Header.hを設定します。
    image

⚠️ **GitHub.com Fallback** ⚠️