IMA DAI SDK の Open Measurement

IMA SDK for iOS には、第三者の視認性測定と検証測定を可能にするために、Interactive Advertising Bureau(IAB)が開発した業界標準である Open Measurement(OM)SDK が含まれています。iOS用の IMA SDK を使用する場合は、付属の OM SDK によって VAST 広告タグ内の <AdVerifications> タグが自動的に解析され、OMID API を介して視認性データが指定の測定ベンダーに送信されます。IMA SDK は OM SDK v、VAST 2 以降の場合は GAM AdVerifications 拡張機能、VAST 4 以降の場合は AdVerifications ノードに対応しています。Open Measurement を利用するには以下の点にご留意ください。

  • Open Measurement を使用するには、 3.9.0 以降の IMA SDK for iOSが必要です。

  • VAST 4.1 以降を使用している場合は、広告で VAST 4.1 の仕様に沿って <AdVerifications> を VAST で入稿するように設定する必要があります。それ以外の場合は <Extension type="AdVerifications"> を使用してください。

  • AdDisplayContainer をオーバーレイ(透明または不透明)で覆わないようにしてください。オーバーレイは OM SDK によって遮られるものとして報告され、視認性が低下するためです。

前提条件

テスト

IMA SDK を使用して Open Measurement をテストするには、必要な上記の SDK バージョンのいずれかと、テスト広告タグを使用します。

VAST レスポンスで <AdVerifications> が返されます。

動画コントロール オーバーレイの障害物を登録する

一時停止ボタンや進行状況バーなどの動画コントロールは、重要な再生情報とアクションをユーザーに提示します。モバイルでは、タップが不正確になり、ユーザーが想定する動作として、メディア要素に対して大規模でタップに適したコントロールをレンダリングすることが一般的になってきています。通常、こうしたコントロールはユーザーがタップするたびにフェードイン / アウトするため、再生時間の大半は表示されません。

YouTube アプリによってレンダリングされた動画コントロールの例を次に示します。

IMA SDK を使用する場合、ほとんどのパブリッシャーは、ほぼ透明な広告の表示コンテナの上にビューを追加することで、こうしたコントロールを実装できます。通常、コントロールは、基になる動画プレーヤーを完全に覆うこのビューの子要素です。この透明なオーバーレイは、タップイベントをキャプチャし、タップされたときにユーザーにコントロールをレンダリングするために使用されます。

Open Measurement SDK を介して広告の視認性が計算されると、メディア要素に重なるすべてのビューが障害物とみなされ、視認可能率が低下します。透明なタップ オーバーレイが広告ディスプレイ コンテナ全体の上に配置されている場合、広告枠が完全に視認不能と宣言される可能性があります。

Open Measurement SDK では、ユーザー エクスペリエンスに不可欠な「フレンドリー」な障害物とみなされる動画コントロールが用意されています。これらのコントロールは、フレンドリーとして登録されると、広告の視認性の測定から除外されます。

IAB と MRC のサポートに伴い、IMA SDK では、こうしたオーバーレイを Open Measurement SDK に登録するための API が導入されています。これらのコントロールは、完全に透明なオーバーレイか、小さなボタンにする必要があります。動画コントロールに関係のないその他のビューは登録しないでください。

DO 登録 登録しない
  • ユーザーのタップをキャプチャする透明なオーバーレイ
  • 一時的なボタン
    • 一時停止
    • 遊べ
    • 全画面表示
    • キャスト/AirPlay
    • 閉じる
    • 進行状況/移動
    • 再生に関連するその他の操作
  • ウォーターマーク
  • ポップアップ
  • ダイアログ
  • 一時的でないボタン
  • その他のわかりにくいビュー

次のサンプルコードは、広告表示コンテナに動画コントロール オーバーレイを登録する方法を示しています。

UIView *myTransparentTapOverlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 250)];
UIButton *myPauseButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 10)];
// Substitute "myTransparentTapOverlay" and "myPauseButton" with the elements
// you want to register as video controls overlays.
// Make sure to register before ad playback starts.
IMAFriendlyObstruction *overlayObstruction =
      [[IMAFriendlyObstruction alloc] initWithView:myTransparentTapOverlay
                                           purpose:IMAFriendlyObstructionPurposeNotVisible
                                    detailedReason:@"This overlay is transparent"];
IMAFriendlyObstruction *pauseButtonObstruction =
      [[IMAFriendlyObstruction alloc] initWithView:myPauseButton
                                           purpose:IMAFriendlyObstructionPurposeMediaControls
                                    detailedReason:@"This is the video player pause button"];

[displayContainer registerFriendlyObstruction:overlayObstruction];
[displayContainer registerFriendlyObstruction:pauseButtonObstruction];

処理が完了したら、次のメソッドを呼び出すことで、これらの邪魔になるものを取り除くことができます。

[displayContainer unregisterAllFriendlyObstructions];