現在、モバイルアプリ入札は、一部のパブリッシャーのみが利用できます。
自社メディエーションは一般提供されていません
Audience Networkによる自社入札は、現時点で非公開ベータ版であり、一般公開されません。この状況が変化した時点で、アップデートが提供される予定です。
それまでの間、Facebookとパートナー関係にあるいずれかのメディエーションプラットフォームを通してAudience Network入札をご利用になれます。
Facebook Audience Networkは、モバイルウェブサイトだけでなくモバイルアプリでの入札もサポートしています。モバイルアプリ入札の統合は、モバイルクライアントからFacebookのサーバーへ配信することも、あなたのサーバーからFacebookのサーバーへ配信することもできます。この概要では、アプリ入札の一般的な概念について説明します。
アプリ入札とは、パブリッシャーが、それぞれの広告掲載機会を複数のデマンドソースにリアルタイムで提供することによって、自社の広告インベントリーに関して公平でオープンなオークションを構築する方法です。すべてのデマンドソースに、すべてのインプレッションで競い、最も高い値を付けて落札するチャンスがあります。
アプリ入札は、各インプレッション機会で入札を提供するために、Open Real-Time Bidding (ORTB)プロトコルを実装したエンドポイントを介して提供されます。アプリ入札では、以下の処理のためにAudience Network SDKが必要となります。
buyeruid
(Audience Network SDKでは bidderToken
)を取得する。これは、入札リクエストの必須項目であり、ユーザーごと、アプリごとに固有のもので、他のユーザーやアプリでは無効になります。adm
フィールドをユーザーのデバイス上のAudience Network SDKに渡して広告を読み込みます。 adm
フィールドには実際の広告が含まれていないことに注意してください。それに含まれるのは、SDKがAudience Networkサーバーから広告を取得するための情報です。オークションを実行すると(上記の入札フローの3番目のステップ)、クライアント側または サーバー側にホストされます。以下に3つの統合タイプを示します。
サーバー間の統合アーキテクチャ
サーバー間統合では、オークションサーバーはFacebook Audience Network入札エンドポイントとその他すべてのデマンドソースを呼び出して入札応答を取得します。次に、オークションサーバーはオークションを実行して落札者を選定します。このオークションサーバーとして、パブリッシャーが構築したオークションロジックを実行する自社サーバーか、Audience Networkのアプリ入札と統合されたサードパーティのサーバーを使用できます。こうして、サーバーのリソースと使用可能なネットワークを利用し、デマンドソースの入札エンドポイントを呼び出すことができるようになります。また、クライアントを更新せずに、これらのエンドポイント統合に変更を加えることもできます。
外部広告サーバーの統合
外部のアドサーバーと連携することで、今日のウォーターフォールメディエーションの世界とアプリ入札の橋渡しをすることができます。これは、アプリ入札をサポートするデマンドソースとサーバー間の統合を行い、オークションの落札者をウォーターフォールのメディエーションプラットフォームに渡して、ウォーターフォールを実行し、総合的に落札したデマンドソースを選択するという仕組みです。この統合は、ウォーターフォール型のメディエーションとアプリ入札の世界をつなぐ、暫定的な 橋渡しという意味を持っています。このタイプの統合を行う場合、独自のオークションロジックを作成する必要はありません。
入札エンドポイントでは、OpenRTBプロトコルv2.5の一部がサポートされています。
注:オークションサーバーのセットアップガイドにあるリクエストの例の全文をご覧ください。
'id' => string, // platform's auction identifier, 'imp' => vec< // slots to bid on shape( 'id' => string, // platform's identifier for this slot auction // only for banner impression opportunities 'banner' => shape( 'w' => int, // width 'h' => int, // height ), // only for native impression opportunities 'native' => shape( 'w' => int, // width 'h' => int, // height ), // only for video impression opportunities 'video' => shape( 'w' => int, // width 'h' => int, // height 'linearity' => int, // 1 = instream, optional 'ext' => shape( 'videotype' => string, // 'rewarded' for Rewarded Video impression opportunities, optional ), ), 'tagid' => string, // Placement ID 'instl' => int, // interstitial flag, 1 = On, 0 = Off, optional ) >, // app details (in-app bidding only) 'app' => shape( 'publisher' => shape( 'id' => string, // publisher app ID ), ), 'device' => shape( 'ua' => string, // device user-agent 'ifa' => string, // ID sanctioned for advertiser use // Do not send ip or ipv6 if you are requesting bids from the client device. // For server-side bid requests set ip or ipv6. 'ip' => string, // device IPv4 'ipv6' => string, // device IPv6 'dnt' => int, // "do not track", 1 = On, 0 = Off, optional 'lmt' => int, // "limit ad tracking", 1 = On, 0 = Off ), 'regs' => shape( // regulations object 'coppa' => int, // US FTC regulations for Children's Online Privacy Protection Act, 1 = On, 0 = Off, optional ), 'user' => shape( 'buyeruid' => string, // Audience Network Identity Token, mandatory ), 'ext' => shape( 'platformid' => string, // Mediation partner Platform ID or publisher FB app ID, mandatory 'authentication_id' => string // Authentication token to validate the originator of the request ), 'at' => int, // auction type: 1 = First Price, 2 = Second Price 'tmax' => int, // auction timeout in milliseconds 'test' => int, // 0 = normal, 1 = test-mode (we bid $99.99, but don't pay out), optional
現在、OpenRTBでリクエストできる広告の種類は、バナー、ネイティブ(ネイティブバナー)、ビデオ(動画リワード、インストリーム動画)、インタースティシャルの4種類に対応しています。注: バナー、ネイティブ、ビデオの各オブジェクトは相互に排他的で、いずれかが必要です。
入札リクエストでサポートされている広告フォーマットの一覧は次の通りです。
広告フォーマット | 入札リクエストのパラメーター |
---|---|
ネイティブ |
|
ネイティブバナー |
|
インタースティシャル |
|
動画リワード |
|
インタースティシャルリワード |
|
バナー - 高さ: 50 |
|
バナー - 高さ: 250* |
|
*この広告フォーマットでは、Monetization Managerでバナーまたはミディアムレクタングルの配置を作成できます
入札応答の有効期間は30分です。入札応答を受け取ってから30分以内であれば任意のタイミングで広告をリクエストできます。入札に基づくインプレッションが30分を超えた場合、支払いは行われません。
注: 入札応答で広告をリクエストすると、広告をクライアントでキャッシュできますが、読み込んで60分以内に表示する必要があります。キャッシュされた広告に基づくインプレッションが60分を超えた場合、支払いは行われません。
1 'id' => string // platform's request identifier 'seatbid' => vec< shape( 'bid' => vec< shape( 'id' => string, // Our identifier for this bid 'impid' => string, // platform's identifier for this slot auction 'price' => float, // Our bid price on CPM basis, in USD 'adm' => string, // Our creative - see Rendering The Ad 'nurl' => string, // URL to get if we win the impression 'lurl' => string, // URL to get if we lose the impression ) >, ), >, 'bidid' => string, // Our identifier for this response 'cur' => string, // bid currency: USD
ORTBで定義された適切な落札失敗コードと共に、落札、落札失敗、請求可能、およびタイムアウトの通知が必要です。ORTBのnurl、lurl、およびburlは入札レスポンスで通知されます。前のセクションの入札レスポンス例を参照してください。入札がタイムアウトした場合には、別のレポート手段により通知されます。
落札nurlは入札レスポンスで通知されます。次のnurlにクリア価格を入力する必要があります。
"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}"
${AUCTION_PRICE}
:これは、入札と同じ単位(たとえば、CPMベースのUSD)で表したオークションのクリア価格で置き換える必要があります。落札失敗のlurlには2個のフラグを入力する必要があります。
"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=${AUCTION_LOSS}&clearing_price=${AUCTION_PRICE}"
${AUCTION_LOSS}
:これは、ORTBの落札失敗コードで置き換えます。${AUCTION_PRICE}
:これは、入札と同じ単位(たとえば、CPMベースのUSD)で表したオークションのクリア価格で置き換える必要があります。様々な落札失敗コードと、対応する落札失敗理由について以下に示します。
落札失敗理由 | 説明 | ORTB v2.5の落札失敗コード |
---|---|---|
入札レスポンスが無効 | 入札が無効です(ただし時間内、入札なしであり、nurlを取り出し可能) | 3 |
入札がタイムアウト* | 入札レスポンスを受信しましたが、オークションのカットオフに間に合いませんでした | 2 |
入札なし | 入札なしがHTTP 204(つまり、呼び出すnurlなし)として表示されましたが、レスポンスを入札なしとして解釈可能です(統合の問題と考えられます)。さらに複数のインプレッションに入札をリクエストできます。入札は実行されますが、すべてに対してではありません。 | 9 |
最高RTBの入札者ではない | 統合的入札(たとえば非RTB交換)などの別の入札者が同じオークションに入った場合に、その入札者に負けました。 | 102 |
インベントリーが素材化していなかった | 入札によりオークションが落札されたが、インプレッションが素材化していませんでした(たとえば、ページが短くてこのスロットを追加できない、キャッシュされた広告が使用される前にユーザーがアプリを閉じたなど)。これはイベントではなく、一部のパートナーのみが使用できるため、使用できない場合は推論により判断されます。 | 4902 |
広告サーバーに送信済み | 決定手順での最後のタッチ点により広告サーバーに高い入札が送信されていると、このコードが送信されます。インプレッションは項目なしのためまだない可能性があり、広告サーバーがオークションを却下しているか、インベントリーが素材化していません。 | 4900 |
広告サーバーでRTBの落札者が選定されていない | RTBオークションで落札しましたが、広告サーバーがオークションを却下しました(直接など)。 | 4903 |
落札 | 決定ツリーで完全落札し、タグがページに配置された(ウェブの場合)か、広告オブジェクトがキャッシュされました(アプリの場合)。表示可能なインプレッションはまだない可能性があります。 | 0 |
インプレッションコールバックがAudience Network SDKでトリガーされた場合には、請求可能の通知が必要です。次のburlにクリア価格を入力する必要があります。
"https://www.facebook.com/audiencenetwork/burl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}"
${AUCTION_PRICE}
:これは、入札と同じ単位(たとえば、CPMベースのUSD)で表したオークションのクリア価格で置き換える必要があります。入札がタイムアウトした場合には、別のレポート手段により通知されます。これは、一般nurlと呼ばれ、入札の受信を待たずに呼び出すことができます。形式は次の通りです。
"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&auction=${AUCTION_ID}&ortb_loss_code=2"
注意:${PARTNER_FBID}
、${APP_FBID}
、および${AUCTION_ID}
には適切な値を入力する必要があります。その値について、次の表で説明します。
パラメーター | 型 | 説明 |
---|---|---|
PARTNER_FBID | Int | Facebookにより発行された広告オークションサーバーIDです。専用の広告オークションパートナーがいない場合にはこのアプリIDを使用します。 |
APP_FBID | Int | オークションを開始したアプリケーション/ビジネスに対してFacebookが発行したIDです。 |
AUCTION_ID | String | 入札リクエストの発行に使用される、クライアントが生成したオークションのIDです。 |
価格はCPMに基づいてUSDで付けられます(たとえば「4.25」は、落札された場合に、1,000インプレッションに対して$4.25支払うことを意味します)。nurl および lurlのクリア価格にも同じ単位を使用する必要があります。支払いは、パブリッシャーに対して直接行われます。
Facebookでは、常にファーストプライスベースで入札を行います。つまり、入札した金額を支払い、支払う総額を想定して入札します。入札額より少なく支払うことが想定されるため、他の入札者が値段を付けることになるセカンドプライスオークションでは不利な立場に置かれることを意味します。
アプリインプレッションでは、最高入札者であるかどうかにかかわらず、インプレッションが表示された場合にのみ支払われます。