В настоящее время биддинг в мобильном приложении доступен не всем издателям.
Собственная агрегация не является общедоступной
Собственный биддинг в Audience Network сейчас проходит закрытое бета-тестирование и не является общедоступным. Мы будем держать вас в курсе всех изменений.
В качестве альтернативы вы можете получить доступ к биддингу в Audience Network через одну из платформ агрегации, с которыми мы сотрудничаем.
Facebook Audience Network поддерживает биддинг в мобильных приложениях и на мобильных сайтах. Биддинг в мобильном приложении может интегрироваться с нашим сервером из мобильного клиента или с вашего сервера. В этом обзоре рассматриваются общие принципы биддинга в приложениях.
Биддинг в приложении позволяет издателям организовать объективные и открытые торги за свои рекламные ресурсы, в рамках которых каждая возможность показа рекламы предлагается нескольким источникам спроса в режиме реального времени. Каждый источник спроса может торговаться за показы и выигрывать их при условии максимальной ставки.
Биддинг в приложении проводится через конечную точку, в которой реализован протокол ORTB для подачи и приема ставок на отдельные показы. Для биддинга в приложении необходим SDK Audience Network, позволяющий выполнять следующие действия:
buyeruid
(в Audience Network SDK называется bidderToken
) — это обязательное поле в запросе ставки, уникальное для пользователя и приложения (для других пользователей и приложений этот маркер недействителен);adm
из ответа со ставкой в SDK Audience Network на устройстве пользователя. Обратите внимание: поле adm
не содержит само объявление. В нем содержится информация, которая позволяет SDK получить объявление с сервера Audience Network.Аукцион (третий этап в описанном выше процессе биддинга) может проводиться на стороне клиента или сервера. Ниже описаны три разных типа интеграции.
Архитектура интеграции "сервер-сервер"
В режиме межсерверной интеграции сервер аукционов вызывает эндпойнт аукциона Audience Network Facebook и все прочие источники спроса для получения откликов на ставки. После этого сервер проводит аукцион и выбирает ставку-победителя. Сервер аукционов может быть внутренним, с вашей собственной логикой проведения аукциона, или сторонним, интегрированным с аукционами для приложений Audience Network. Благодаря этому вы можете использовать ресурсы сервера и доступную сеть для вызова эндпойнтов аукциона для источников спроса. Вы также можете вносить изменения в интеграцию этих эндпойнтов без обновления клиента.
Интеграция внешнего сервера рекламы
Интеграция внешнего сервера рекламы позволяет объединить агрегацию водопадов с аукционами в приложениях. Для этого выполняется интеграция в режиме "сервер-сервер" с источниками спроса, поддерживающими аукционы в приложениях, а затем данные о победителе аукциона передаются платформе агрегации водопадов, которая запускает водопад и выбирает победивший источник спроса. Такая интеграция служит промежуточным звеном между агрегацией водопадов и аукционами в приложениях. Такой тип интеграции избавляет от необходимости писать собственную логику аукционов.
Наша конечная точка биддинга поддерживает подмножество протокола OpenRTB версии 2.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: баннеры, нативную (или нативную баннерную) рекламу, видео (с вознаграждением или In-Stream) и межстраничную рекламу. Примечание. Объекты баннеров, нативной рекламы и видео являются взаимоисключающими, однако один из этих объектов обязателен.
Список поддерживаемых в запросе на рекламу форматов рекламы:
Формат рекламы | Параметры в запросе на рекламу |
---|---|
Нативная |
|
Нативная баннерная |
|
Межстраничная |
|
Видео с вознаграждением |
|
Межстраничная с вознаграждением |
|
Баннер, высота 50 |
|
Баннер, высота 250 * |
|
* Баннер или место размещения "Средний прямоугольник" для рекламы этого формата можно создать в Monetization Manager.
Ответ со ставкой действителен в течение 30 минут. Запросить объявление можно в любой момент в течение 30 минут после получения ответа со ставкой. По истечении этого времени показы на основе ставок не оплачиваются.
Примечание. После запроса объявления, соответствующего ответу со ставкой, оно может кэшироваться в клиенте, но должно быть показано в течение 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).Наш параметр lurl для проигрыша имеет два флага, значения которых необходимо подставить:
"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).Ниже приведен список различных кодов проигрыша и соответствующих причин проигрыша.
Причина проигрыша | Описание | Код проигрыша ORTB 2.5 |
---|---|---|
Недействительный отклик на ставку | Ставка недействительна (однако подана вовремя, не является "не ставкой" и позволяет извлечь из нее параметр nurl). | 3 |
Тайм-аут ставки * | Отклик на ставку получен, но слишком поздно (после завершения аукциона). | 2 |
Не ставка | Объекты, не являющиеся ставками, обозначаются кодом HTTP 204 (т. е. не содержат параметра nurl, по которому можно было бы выполнить вызов), однако наш отклик может интерпретироваться как отклик на объект, не являющийся ставкой (как правило, это проблема интеграции). Вы также можете запросить ставки для нескольких показов, а мы предложим ставку для некоторых (но не всех) из них. | 9 |
Не самая высокая ставка RTB | Наша ставка проиграла другой ставке (возможно, синтетической, то есть не относящейся к бирже RTB) в том же аукционе. | 102 |
Элемент не был показан | Наша ставка выиграла аукцион, но показ не был реализован (например, страница оказалась недостаточно длинной для того, чтобы включить соответствующий слот, или пользователь вышел из приложения, прежде чем было использовано кэшированное объявление). Такой отклик предоставляют не все партнеры (это не является событием). Если он не указан, мы его подразумеваем. | 4902 |
Отправлено на сервер рекламы | Этот отклик отправляется, если с последнего этапа в процессе принятия решений наша максимальная ставка отправляется на сервер рекламы. При этом показ может быть не реализован из-за отсутствия элементов строки, переопределения результатов аукциона сервером рекламы либо из-за того, что соответствующий элемент не был показан. | 4900 |
Победитель RTB не был выбран сервером рекламы | Мы выиграли аукцион RTB, но сервер рекламы переопределил его результаты (например, напрямую). | 4903 |
Выигрыш | Мы выиграли по результатам полного дерева решений, и на страницу был добавлен тег (для сайта) либо был кэширован объект объявления (для приложения). При этом показ все равно может быть не реализован. | 0 |
В случае обратного вызова показа из SDK Audience Network необходимо отправлять уведомления о счетах. В 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}
: это значение заменяется ценой окончательного расчета для аукциона в тех же единицах измерения, что и ставка (т. е. USD для CPM).На случай тайм-аута ставки мы предлагаем вам альтернативный маршрут уведомления. Это стандартный 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 | Целое число | ID сервера аукциона рекламы, выдаваемый Facebook. Если у вас нет отдельного партнера по аукциону рекламы, вставьте сюда ID своего приложения. |
APP_FBID | Целое число | Выдаваемый Facebook ID приложения или компании, запустившей аукцион. |
AUCTION_ID | Строка | Созданный клиентом ID аукциона, который вы использовали для отправки запроса ставки. |
Цены указываются в долларах США за CPM (т. е. цена в размере 4,25 означает выплату в размере 4,25 доллара США за 1000 показов в случае выигрыша ставки). Та же единица измерения должна использоваться для цены окончательного расчета в параметрах nurl и lurl. Выплаты осуществляются непосредственно издателю.
Ставки всегда делаются по принципу первой цены, т. е. выплачивается вся сумма ставки, а ставка делается с предположением, что будет выплачена полная сумма. Такая схема приводит к невыгодному положению на аукционе второй цены, где другие участники могут делать ставки исходя из предположения, что они выплатят меньше полной суммы.
Для показов в приложении: мы оплачиваем только просмотренные показы независимо от того, была ли наша ставка наивысшей.