概要
ネイティブ広告はアプリのデザインに合わせて広告UIを自由にカスタマイズできる広告フォーマットです。広告素材(画像、動画)、タイトル、説明、CTAボタンなどの要素を個別に配置して自然なユーザー体験を提供できます。主な機能
- 完全なUIカスタマイズ:アプリのデザインシステムに合わせて広告レイアウトを自由に構成
- 多様なメディア対応:画像および動画広告素材対応
- 柔軟なクリック処理:全体クリックまたはカスタムクリック処理が可能
- プロフィール情報表示:広告主プロフィールロゴおよび名前対応
- バックフィル広告対応:バックフィル広告かどうか確認可能
AdropNativeAdクラス
ネイティブ広告をロードして管理するメインクラスです。コンストラクタ
string
必須
広告ユニットID(コンソールで発行)
boolean
デフォルト:"false"
カスタムクリック処理使用有無
true:開発者が直接クリック処理を実装(ビデオ広告コントローラー使用可能)false:AdropNativeAdViewがすべてのクリックイベントを自動処理
AdropAdChoicesPosition
デフォルト:"AdropAdChoicesPosition.topRight"
バックフィルネイティブ広告のAdChoicesマーク表示位置
string
コンテキストターゲティングに使用するコンテキストID(1.17.0+)
メソッド
プロパティ
AdropNativeAdViewコンポーネント
ネイティブ広告を表示するコンテナコンポーネントです。Props
AdropNativeAd
表示するネイティブ広告インスタンス
使用例
AdropNativeAdViewは広告コンテキストを提供するため、すべての広告要素ビューはこのコンポーネント内部に配置する必要があります。ネイティブ広告要素ビュー
AdropProfileLogoView
広告主プロフィールロゴを表示する画像コンポーネントです。Omit<ImageProps, 'source'>(React NativeのImageコンポーネントプロパティ、sourceは自動設定されます)
AdropProfileNameView
広告主プロフィール名を表示するテキストコンポーネントです。TextProps(React NativeのTextコンポーネントプロパティ)
AdropHeadLineView
広告タイトルを表示するテキストコンポーネントです。TextProps(React NativeのTextコンポーネントプロパティ)
AdropBodyView
広告本文を表示するテキストコンポーネントです。TextProps(React NativeのTextコンポーネントプロパティ)
AdropMediaView
広告画像または動画を表示するメディアコンポーネントです。ViewProps(React NativeのViewコンポーネントプロパティ)
AdropCallToActionView
行動誘導フレーズ(CTA)を表示するテキストコンポーネントです。TextProps(React NativeのTextコンポーネントプロパティ)
AdropAdvertiserView
広告主名を表示するテキストコンポーネントです。TextProps(React NativeのTextコンポーネントプロパティ)
AdropIconView
広告アイコンを表示する画像コンポーネントです。Omit<ImageProps, 'source'>(React NativeのImageコンポーネントプロパティ、sourceは自動設定されます)
AdropNativeAdListenerインターフェース
広告イベントを処理するリスナーインターフェースです。AdropNativePropertiesタイプ
広告プロパティ情報を含むタイプです。AdropNativeProfileタイプ
広告主プロフィール情報を含むタイプです。実装例
以下はネイティブ広告を実装する完全な例です。テストユニットID
開発およびテスト時には以下のテストユニットIDを使用してください。エラー処理
広告ロード失敗時にonAdFailedToReceiveコールバックでエラーコードを受け取ることができます。
主なエラーコード
エラー処理の例
ベストプラクティス
1. リソース解放
コンポーネントアンマウント時に必ず広告リソースを解放してください。2. ビデオ広告およびバックフィル広告処理
ビデオ広告かどうか、およびバックフィル広告かどうかに応じて適切なレンダリング方式を選択してください。3. URL処理
WebViewでURLクリック時に外部ブラウザで開くように処理してください。4. 広告要素の選択的使用
アプリのデザインに合わせて必要な広告要素のみ選択的に使用してください。動画トラッキングとVTR
Adropはネイティブ広告の動画指標 — VTR(動画完了率)、onAdVideoStart、onAdVideoEnd — を、SDKメディアコンテナ内で動画がレンダリングされる場合にのみ収集します。React Nativeでは実装例セクションのように、properties.creative(HTMLペイロード)をWebViewでレンダリングする方式がこれに該当します。これは広告のメインメディア(メディア 1)に当てはまります。複数メディアのクリエイティブのそれ以外のメディアについては、複数メディアのクリエイティブを参照してください。
properties.assetフィールドは元の画像または動画ファイルのURLを返します。これはサムネイル表示や媒体社独自分析などの補助メタデータとして公開されており、再生を直接行うためのものではありません。
推奨パターン
動画クリエイティブはAdropNativeAdView内部に配置したWebViewでHTMLクリエイティブをレンダリングしてください。
AdropNativeAdのisVideoAdとisBackfilledフラグを使用すると、asset URLを直接検査することなく、<AdropMediaView />(画像またはバックフィルクリエイティブ)と<WebView />(ダイレクト動画クリエイティブ)を分岐できます。
特定の面がどうしても独自プレイヤーを使う必要があり、VTRが計測されないことを許容する場合、広告を
AdropNativeAdViewにバインドしたままにすることで、クリックとインプレッションのアトリビューションは引き続き確保できます。ただしその面を社内レポートで非VTRインベントリとして分類し、SDKが計測した動画パフォーマンスと混在させないでください。複数メディアのクリエイティブ
adrop-ads-react-native 1.16.0以降が必要です。バックフィルを使う場合は、バックフィルモジュールも1.16.0に更新してください。properties.extraAssetsには、広告のすべてのメディアがコンソールで設定したメディアIDをキーとして格納されています。メディア 1は常にm1で、それ以外のメディアには広告ユニット詳細画面のメディアサイズに表示されるID(例:m2、m3)が使われます。
- メディア 1(
m1)はproperties.asset、properties.creativeと同じメディアです。これまでどおり表示し、それ以外のメディアだけを自分で描画してください。 - メディアが1つのユニットのクリエイティブとバックフィル広告では、
extraAssetsは空です。これらの広告は通常どおり表示してください。 - メディアは順序に頼らず、IDで取得してください。
- 広告がダークモードで配信される場合、画像メディアもダークモード用の画像になります。
- 複数メディアのクリエイティブでレイアウトを確認するには、テストデバイスでクリエイティブをプレビューしてください。
AdropNativeAssetタイプ
メディアの表示
- 画像:
useCustomClickの設定にかかわらず、AdropNativeAdView内のタップは広告クリックになるため、その中に置いた画像のタップも、広告のほかの部分と同じように集計されます。画像のcreativeHTMLはクリックをAdropに報告しないため、読み込まないでください。 - 動画:
assetURLではなくcreativeHTMLを再生してください。HTMLに動画プレイヤーとトラッキングが含まれているため、動画指標はこのHTMLでのみ計測されます。WebViewはAdropNativeAdViewの外に配置してください。中に置くと、プレイヤーのコントロールのタップを含め、動画のタップが広告クリックとしても集計されることがあります。HTMLは事前に読み込まず、広告が画面に表示される直前に読み込んでください。 - ランディングページ: ユーザーが動画をタップすると、HTMLがクリックを報告し、ランディングページを新しいウィンドウまたは同じウィンドウで開くよう要求します。要求されたURLを
onOpenWindowとonShouldStartLoadWithRequestで開いてください。
インプレッションとクリック
インプレッション、クリック、動画指標は、SDKとメディアの両方が報告しても、メディア単位ではなく広告ごとに1回だけ集計されます。動画のどのタップがクリックとして集計されるかは、ユニットの動画コントローラー設定によって異なります。コントローラーがオフの場合は動画のすべてのタップがクリックになり、オンの場合は再生・ミュートのコントロールのタップはクリックになりません。
例
メディア 2(m2)が画像の場合はAdropNativeAdViewの中に、動画の場合はそのすぐ下に表示する例です。m2はユニットのメディアIDに置き換えてください。
AdChoicesの位置調整
バックフィルネイティブ広告で、AdChoicesマークを表示するコーナーを指定できます。AdropNativeAdコンストラクタの3番目の引数としてpreferredAdChoicesPositionを渡してください。
この設定はバックフィルネットワークに渡される希望位置のヒントで、バックフィルネイティブ広告にのみ適用されます — ダイレクト広告には影響しません。バックフィルネットワークがポリシー上別の位置に表示する場合があります。
バックフィル広告のプリロード (preload)
SDK 1.17.0から、AdropNativeAd.preload()でバックフィルネイティブ広告をプリロードしておくことができます。同じユニットIDと同じAdChoicesの位置でload()したネイティブ広告が、ダイレクト広告なしでバックフィル広告に切り替わると、バックフィル広告を再度リクエストせず、プリロードしておいた広告をすぐに使用します。
load()はpreloadに関係なく、まずダイレクト広告をリクエストします。ダイレクト広告を受信した場合、プリロードしておいた広告はそのまま残ります。preloadを呼び出さなければ、動作はこれまでと同じです。
動作条件
adrop-ads-react-native1.17.0以降と、ネイティブプラットフォームのバックフィル依存関係1.17.0以降が必要です。はじめにを参照してください。- 現在表示するダイレクト広告がないとサーバーからアプリに通知されている状態でのみ、バックフィル広告を受信します。それ以外の場合は、バックフィル広告をリクエストせずに
AdropErrorCode.preloadSkippedで終了します。ダイレクト広告のキャンペーンがあるアプリでは正常な結果です。 - アプリのインストール直後、アプリキーを変更した直後、
setUIDで別のユーザーに切り替えた直後は、サーバーの応答を受信するまでAdropErrorCode.preloadSkippedで終了します。 - テストユニットIDでは常に
AdropErrorCode.preloadSkippedで終了します。
使用方法
ネイティブ広告がある画面を表示する直前に呼び出してください。プリロードした広告は使用されないと30分後に破棄されるため、すぐに表示する広告に対してのみ呼び出してください。結果を待ってからload()する必要はありません。まだ受信中の場合は、load()がその結果を待って使用します。
AdropNativeAd.preload()はプリロードに成功するとresolveされ、それ以外の結果(AdropErrorCode.preloadSkippedを含む)は{ code, message }でrejectされます。処理しないと、正常な結果であるSKIPPEDでも未処理のPromise rejectionの警告が発生するため、try/catchで囲むか、.catchを付けてください。
load()するAdropNativeAdを、preloadに渡した値と同じpreferredAdChoicesPositionで作成してください。どちらもデフォルト値はAdropAdChoicesPosition.topRightです。
プリロードした広告が使われる条件
- 同じユニットIDと同じAdChoicesの位置: AdChoicesの位置はバックフィル広告を受信するときに決まるため、
load()する広告のpreferredAdChoicesPositionが、preloadに渡した値と同じである必要があります。異なる場合、プリロードした広告はそのまま残り、load()は通常どおりバックフィル広告をリクエストします。 - 一度だけ使用: プリロードした広告は、1回の
load()で使用されるとなくなります。再度プリロードするには、preloadをもう一度呼び出してください。 - 有効期間と個数: 30分以内に使用されなかった広告は破棄されます。同じユニット・AdChoicesの位置には1個のみ保持し、ネイティブ広告は異なる組み合わせを最大5個まで保持します。5個を超えると、最も早く受信した広告から破棄します。
- 再度呼び出す場合: 同じユニット・AdChoicesの位置で再度呼び出しても、新たにリクエストしません。受信済みの広告がある場合は新しいリクエストなしでresolveされ、受信中の場合はそのロードの結果(成功または失敗)がそのまま伝えられます。広告を更新する用途には使用できません。ただし、その間にユーザーの同意状態が変わった場合は、既存の広告を破棄して新たに受信します。
- 同意状態の変更: プリロードした後にユーザーの同意状態が変わると、その広告は
load()に使用されません。 - resolveの意味:
preload()がresolveされたということは、プリロードが終わったという意味です。その結果を待っていたload()がすでに使用している場合もあります。
失敗コード
次のステップ
バナー広告
バナー広告を実装する
インタースティシャル広告
インタースティシャル広告を実装する
ポップアップ広告
ポップアップ広告を実装する
リワード広告
リワード広告を実装する