Viewable Impressionの実装

Viewable Impressionとは?

Viewable Impressionとは、ユーザーが広告を視認したことを保証するためのガイドラインです。

Viewable Impressionはインプレッションの条件を満たした上で、以下の条件を満たす必要があります。

広告種類 条件
静止画 1. 広告ピクセルの50%以上がビューアブルなスペースに表示される
2. 1秒以上連続して上記ピクセルが表示される
動画 1. 広告ピクセルの50%以上がビューアブルなスペースに表示される
2. 2秒以上連続して上記ピクセルが表示される

アドビューアブルインプレッションのイメージ

実装

RFP Android SDKではViewable Impressionをサポートするクラスを提供しています。

アプリ側ですでにViewable判定を行っている場合はそちらをご利用ください。

RFPにおけるサポートクラス

1. RFPVisibilityTracker をインスタンス化する

RFPVisibilityTrackerをインスタンス化します。引数にはActivityが必要です。

    val tracker = RFPVisibilityTracker(activity)
    

    RFPVisibilityTracker tracker = new RFPVisibilityTracker(activity);
    

    2. 広告ユニットを追加する

    RFPVisibilityTracker#addView(View, RFPInstreamInfoModel) を使用して広告ユニットの表示状態を監視します。

    以下、RecyclerView.Adapterでの実装イメージです。

      override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
          val item = getItem(position)
          if (item is RFPInstreamInfoModel) {
              // ... ...
              tracker.addView(holder.itemView, item)
          } else {
              // ... ...
          }
      }
      

      @Override
      public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
          Object item = getItem(position);
          if (item instanceof RFPInstreamInfoModel) {
              // ... ...
              tracker.addView(holder.itemView, (RFPInstreamInfoModel) item)
          } else {
              // ... ...
          }
      }
      

      3. 不要になったら解放を行う

      このクラスはオブジェクト位置の監視を行うため ViewTreeObserver を使用しています。

      不要になった時点でこの監視を解くため RFPVisibilityTracker#detach() を呼ぶ必要があります。 Fragment#onDestroyView() などで呼び出してください。

        override fun onDestroyView() {
            super.onDestroyView()
            tracker.detach()
        }
        

        @Override
        public void onDestroyView() {
            super.onDestroyView();
            tracker.detach();
        }
        

        この3つの手順で静止画・動画広告に対応するViewable Impressionを送信することができます。