ネイティブ広告

パブリッシャーはこのネイティブ広告フォーマットを使用して、ユーザーに表示される広告をカスタマイズできます。SDK から広告を取得してから、アプリのユーザー インターフェースに合わせてカラーフィルタの追加、タイポグラフィの変更、カスタム オーバーレイの追加を行うことにより、広告のレイアウトと外観を変更できます。ネイティブ広告のパフォーマンスやユーザー エクスペリエンスを最適化するには、多くの場合、パブリッシャーは表示制限を設定するか、動画再生を SDK にオフロードします。最後に、パブリッシャーは広告クリック リスナーをカスタマイズして、上方向へのスワイプなどの追加のイベントをモニタリングすることもできます。

ネイティブ広告フォーマットには、他の広告フォーマットを表示する場合よりもパブリッシャーに対する高い信頼性が求められます。SDK は通常、ポリシー違反を検出し、パブリッシャーに提供された広告コンテンツがユーザーに表示されることを確認しようとします。

SDK ランタイムでのバナー広告のサポートは、SurfaceControlViewHost API を通じて実現されます。これにより、SDK はクライアント アプリによって改ざんされることなく、SDK ランタイム プロセスのユーザー インターフェース要素を表示できます。SurfaceView の Z より上モードまたは Z より下モードを使用して、SDK UI がレンダリングされるサーフェスがクライアント アプリのウィンドウの上にあるか下にあるかを判断します。Z より上モードを使用して広告がレンダリングされた場合、SDK はユーザー操作から MotionEvents を受け取りますが、広告の上にクライアント アプリケーション ビューは表示されません。広告が Z より下モードでレンダリングされると、アプリは広告の上に独自のビューを表示しますが、ユーザー インタラクションから受け取った MotionEvents は、SDK ではなくアプリに送信されます。

SDK とパブリッシャーは、privacysandbox.ui Jetpack ライブラリを使用して、UI セッションを確立し、維持できます。

アプリ所有の広告コンテナ

Google は、ネイティブ広告(アプリのオーバーレイを含む)に含まれるすべてのビューを SDK が所有するようプロトタイプ化しました。その結果、可能な場合に UI に制限が課せられ、SDK との統合が複雑になることが判明しました。より現実的なアプローチは、アプリがほとんどのビューを所有できるようにすることです。SDK は引き続き、privacysandbox.uiSandboxedSdkView を使用して、広告ビューなどの UI を自身で表示できます。このアプローチには、この広告フォーマットの既存のユースケースと将来のユースケースをサポートするうえで最も柔軟性があります。このアプローチでは、アプリ デベロッパーは、広告コンポーネントを適切な場所に移動し、必要に応じてスタイルを設定できます。一方で SDK は、必要に応じて動画プレーヤーのオーナー権限を保持し、メディア コントロールへのアクセスを維持します。

パブリッシャーと SDK の間のデータフローを示す図。
図 1. 推奨ネイティブ広告の制御フロー。

広告の状態に関する通知

SDK ごとに、不正行為の検出とポリシー違反を把握するために確認する広告ビューのプロパティが異なります。Google は、使用するプロパティを指定する、またはクエリ対象のプロパティを変更する際に SDK のボトルネックになることなく、これをサポートします。NativeAdContainerInfo を使用して、広告コンテナとその子ビューを表す表現を作成することをおすすめします。これは、さまざまなゲッターが広告コンテナとそのコンテンツに限定された情報を公開する、Parcelable オブジェクトです(この情報はプライバシーが保護されており、コンピューティングに高い負荷は必要ありません)。SDK で、NativeAdContainerInfo に含まれるシグナルのカテゴリにオプトインできるようになります。SDK は、広告のインプレッションやユーザーのクリックといった請求対象のイベントなど、SDK に関連性のある方法で広告の状態が変化するたびに、このオブジェクトを受け取ります。

さらに、NativeAdContainer に追加されたそれぞれの子にビュー固有のタグ(文字列)をパブリッシャーが追加できるようになります。これにより、それぞれの子がどの広告アセットに対応しているかを SDK に知らせることができます。

ユーザーが SDK 所有のビューをクリックすると、UI ライブラリはプロパティが SDK の座標空間に変換された MotionEvent を元の MotionEvent とともに、SDK に転送します。Android の将来のバージョンでは、このネイティブ広告の SDK が所有する部分のすべてのユーザー操作に対して、クライアント アプリがタップ フォーカスを転送して SDK で処理できるようにする方法を模索しています。

証明書

以下の証明書は、広告の表示に関する確実性を高めるために SDK で利用できるものです。

  1. デバイスの完全性証明書: 鍵構成証明などのプラットフォーム API を使用して、デバイスの完全性を判断します。
  2. APK ID: SdkSandboxController.getClientPackageName などの SdkSandbox API と requestChecksum などの PackageManager API を使用して APK ID を確認します。
  3. VerifiedMotionEvents: Android の将来のバージョンでは、このネイティブ広告の SDK が所有する部分に、すべてのユーザー ジェスチャーのタップ フォーカスをクライアント アプリが転送して SDK で処理できるようにすることを検討しています。システム API を使用して MotionEventsVerifiedMotionEvents に変換できます。SDK はユーザーが操作して選択した場合に、独自の UI を表示できます。

自由回答形式の質問

以下の点についてフィードバックをお寄せください。

  1. SDK で VerifiedMotionEvents を独自に生成することと、プロバイダ UI ライブラリで SDK 用に生成することのどちらが望ましいですか?
  2. SDK が動画を含むビューをパブリッシャーが所有することを許可することと、それらのビューを SDK 自身が所有することのどちらが望ましいですか?
  3. どのプロパティを AppOwnedAdContainerInfo オブジェクトに設定する必要がありますか?
  4. SDK が所有する広告または広告コンポーネントのうち、いくつが画面に同時に表示されることを想定していますか?