Obsługa aukcji dla wielu sprzedawców za pomocą zapośredniczenia w ramach Protected Audience API

Platformy reklamowe po stronie sprzedawcy zwykle sięgają po różne źródła ofert reklamowych, aby zoptymalizować przychody z reklam. W przypadku zapośredniczenia reklam sieć reklamowa lub usługa wywołuje wiele sieci reklamowych, aby określić najlepszą reklamę dla danego boksu reklamowego. Ta propozycja opisuje, jak można rozszerzyć interfejs Protected Audience API na Androida, aby stosować w nim funkcję pośrednictwa w ramach kaskady w sposób zapewniający ochronę prywatności. Obecnie sieci reklamowe oferują deweloperom aplikacji różne sposoby pośredniczenia aukcji reklam pochodzących od wielu sprzedawców reklam:

  1. Zapośredniczenie kaskadowe: deweloperzy aplikacji określają uporządkowaną listę sieci reklamowych, często według historycznych eCPMs dla danej sieci. Ta lista nazywa się łańcuchem pośrednictwa. Platforma zapośredniczenia dewelopera aplikacji korzysta z tej listy, aby wywoływać sieci reklamowe w kolejności podanej na liście, i w ten sposób określać odpowiednie źródła popytu na reklamy.
  2. Automatyczne zapośredniczenie: deweloper aplikacji konfiguruje wiele sieci reklamowych, aby uczestniczyły w określaniu stawek za reklamy. Te sieci mogą określać stawki w czasie rzeczywistym na podstawie wartości danej możliwości.
  3. Zapośredniczenie hybrydowe: połączenie kaskady i programowego zapośredniczenia.

Zapośredniczenie kaskadowe

W przypadku zapośredniczenia kaskadowego, gdy pojawi się możliwość wyświetlenia reklamy, pakiet SDK reklam wysyła żądanie do swojego serwera zaplecza. Zamiast odpowiedzi na żądanie w postaci zwycięskiego kreacji reklamy serwer odpowiada łańcuchem zapośredniczenia zawierającym listę sieci reklamowych uporządkowaną według historycznych wartości eCPM.

Model zapośredniczenia kaskadowego.
Model zapośredniczenia kaskadowego.

Rysunek 1. Model zapośredniczenia kaskadowego.

W przypadku modelu kaskadowego po stronie serwera pakiet SDK reklam wywołuje każdą sieć reklamową (lub własny pakiet aukcji SDK) w kolejności określonej przez łańcuch zapośredniczenia. Jeśli sieć reklamowa może zrealizować żądanie reklamy, renderuje reklamę. W przeciwnym razie żądanie jest wysyłane do następnej sieci w łańcuchu. Ten proces jest powtarzany, dopóki prośba nie zostanie spełniona lub łańcuch nie zostanie wyczerpany.

Zapośredniczenie kaskadowe jest często optymalizowane przez regularne zmienianie kolejności łańcucha zapośredniczenia na podstawie ponownej oceny eCPM z własnych źródeł reklam.

Automatyzacja zapośredniczenia

Automatyczne zapośredniczenie (znane też jako „licytowanie w nagłówku”) to alternatywa dla korzystania z historycznego eCPM do określania, która sieć reklamowa ma szansę wyświetlić żądanie reklamy. W przypadku automatyzacji pośrednictwa dostawcy używają zamiast tego bieżących wartości stawek, aby wybrać reklamę.

Programowy model zapośredniczenia.
Model automatyzacji mediacji.

Rysunek 2. Model automatycznego pośrednictwa

Zapośredniczenie hybrydowe

Niektóre rozwiązania programowego zapośredniczenia łączą sieci reklamowe w hybrydowym trybie kaskady i określania stawek, aby zapewnić większą kontrolę nad reklamą, a zarazem korzystać z zalet korzystania z aktualnych wartości eCPM w celu maksymalizacji przychodów z uczestniczących sieci reklamowych.

W modelach hybrydowych sieci reklamowych i dostawcy usług zapośredniczenia mogą zapewnić deweloperom aplikacji większą elastyczność dzięki połączeniu elementów kaskady i ustalania stawek w czasie rzeczywistym. Modele hybrydowe umożliwiają deweloperom aplikacji konfigurowanie sieci reklamowych na podstawie historycznych wartości eCPM, co daje im możliwość wyświetlania reklamy przed uruchomieniem określania stawek w czasie rzeczywistym w uczestniczących sieciach w celu wykorzystania możliwości reklamowych.

Zapośredniczenie kaskadowe Protected Audience

Interfejs Protected Audience API na Androida obsługuje zapośredniczenie kaskadowe dzięki prowadzeniu wielu aukcji, z których każda dotyczy osobnego węzła w grafie zapośredniczenia. Jeśli w aukcji nie ma zwycięzcy, wywoływany jest następny węzeł sieci aukcji, aż do wyczerpania łańcucha. Proces zapośredniczenia kaskadowego:

  1. Pakiet SDK zapośredniczenia pobiera łańcuch zapośredniczenia z urządzenia końcowego serwera reklam kontekstowych, który może zwracać reklamy kontekstowe lub łańcuchy zapośredniczenia.
  2. Jeśli punkt końcowy serwera reklam zwraca łańcuch zapośredniczenia, pakiet SDK zapośredniczenia kolejno przetwarza każdy element łańcucha, wywołując pakiet SDK danej sieci reklamowej, aby przeprowadzić selekcję reklam kontekstowych i remarketingowych. Każdy element w łańcuchu reprezentuje żądanie sieci reklamowej dotyczące zakupu miejsca na reklamę po określonej cenie za określoną liczbę wyświetleń, kliknięć lub czas reklamowy.
  3. Jeśli żaden z elementów zamówienia w łańcuchu nie wybierze reklamy zwycięskiej, framework SDK zapośredniczenia może wyświetlić reklamę z własnej sieci reklamowej, korzystając z wyboru reklam Protected Audience, który uwzględnia zarówno reklamy remarketingowe, jak i kontekstowe.
Proces zapośredniczenia kaskadowego Protected Audience.
Proces zapośredniczenia kaskadowego Protected Audience.

Rysunek 3. Pośrednictwo kaskadowe z interfejsem Protected Audience API.

Powyższy diagram przedstawia przykład algorytmu zapośredniczenia kaskadowego, który może być implementowany przez pakiet SDK zapośredniczenia, ale bez możliwości optymalizacji przez sieć reklamową własnego wydawcy. Interfejs Protected Audience API umożliwia optymalizację sieci reklamowej za pomocą własnych danych, ponieważ pozwala na łańcuchowe tworzenie procesów wyboru reklam i zgłaszanie zwycięskich wyświetleń.

Wynik AdSelection

Typ zwracanej wartości funkcji selectAds() to obiekt AdSelectionOutcome. AdSelectionOutcome zawiera URI renderowania zwycięskiej reklamy i AdSelectionId, czyli nieprzejrzysty typ liczby całkowitej, który identyfikuje kreację reklamy zwycięskiego elementu zamówienia.

AdSelectionOutcome {
  Uri renderUri;
  Long AdSelectionId;
}

AdSelectionId działa jak wskaźnik do AdSelectionOutcome. Obecnie parametr AdSelectionId jest przekazywany do metody reportResult() jako parametr ReportImpressionInput, aby umożliwić identyfikację właściwych reklam, w przypadku których są wywoływane metody reportWin()reportResult().

Propozycja łańcucha wyborów reklam

Proponujemy przeciążenie funkcji selectAds() funkcją AdSelectionFromOutcomesConfig.

val config = AdSelectionFromOutcomesConfig.Builder()
        .setSeller(seller)
        .setAdSelectionIds(listOf(outcome1pAdSelectionId))
        .setSelectionSignals({"bid_floor": bidFloorOfNextNetworkInline})
        .setSelectionLogicUri(selectionLogicUri)
        .build()
adSelectionClient.selectAds(config)

Umożliwia to pakietowi SDK zapośredniczenia porównanie stawki reklamy zwycięskiej z minimalną stawką następnej sieci.

Przykład 1:

Przykład 2:

Raportowanie zwycięskich wyświetleń

Jeśli zwycięzca znajduje się w grupie selectAds(AdSelectionFromOutcomes), to właśnie ta reklama wygrywa zapośredniczenie. Następnie wywoływana jest funkcja reportImpression z identyfikatorem selekcji reklamy zwycięskiej reklamy z poziomu selectAds(AdSelectionFromOutcomes) i odpowiadającej jej AdSelectionConfig.

Jeśli zwycięzca zostanie zwrócony z poziomu selectAds(AdSelectionConfig) w przypadku dowolnej sieci, zostanie wywołana funkcja reportImpression z identyfikatorem i konfiguracją wyboru reklamy z tego wywołania.

Uruchamianie zapośredniczenia kaskadowego

Oto kolejność operacji w ramach procesu zapośredniczenia kaskadowego.

  1. Wykonaj selekcję reklam z użyciem własnych danych.
  2. Przejdź przez łańcuch zapośredniczenia. W przypadku każdej sieci zewnętrznej:
    1. Utwórz AdSelectionFromOutcomeConfig, w tym outcomeId firmy własnej i stawkę minimalną pakietu SDK firmy zewnętrznej.
    2. Wywołaj funkcję selectAds() z wartością config z poprzedniego kroku.
    3. Jeśli wynik nie jest pusty, zwracaj reklamę.
    4. Wywołaj metodę selectAds() w bieżącym adapterze sieci pakietu SDK. Jeśli wynik nie jest pusty, zwraca reklamę.
  3. Jeśli w łańcuchu nie zostanie znaleziony zwycięzca, zwracaj reklamę własnego źródła.

Sprawdzone metody

Przeprowadzanie aukcji kontekstowych przed optymalizacją własnych danych

Popyt w ramach remarketingu może generować wysokie stawki, które mogą przynieść korzystne wyniki w łańcuchu pośrednictwa. Obcinanie to proces, który często służy do włączenia optymalizacji za pomocą własnych danych poprzez dostosowanie listy odbiorców remarketingu.

Zapotrzebowanie na remarketing w interfejsie Protected Audience API jest dostępne tylko po stronie klienta w ramach aukcji Protected Audience. Może to utrudnić włączenie optymalizacji własnych danych po stronie serwera. Aby ograniczyć problemy z optymalizacją pierwszorzędową, najpierw przeprowadź aukcję kontekstową, a potem optymalizację pierwszorzędową na podstawie zwycięskiego wyniku reklamy zgodnie z opisem na tej stronie.

Krótkie łańcuchy zapośredniczenia na urządzeniu

Aby zapewnić optymalną wydajność, łańcuchy pośrednictwa na urządzeniu powinny być krótkie. Koszt obliczeń dla wykonania na urządzeniu może być proporcjonalny do liczby aukcji ocenianych w ramach łańcucha zapośredniczenia. Innymi słowy, im więcej węzłów, tym więcej wymaganych cykli obliczeniowych i dłuższy czas oczekiwania. Podczas przekazywania węzłów do oceny w ramach zapośredniczenia na urządzeniu weź pod uwagę wpływ opóźnień na przychody.

Uwagi dodatkowe

Interfejs Protected Audience API nie oferuje kompleksowego rozwiązania do zapośredniczenia wielu boksów reklamowych. Każdy boks reklamowy musi być przetwarzany niezależnie.

Interfejs Protected Audience Mediation API obsługuje zapośredniczenie kaskadowe i ograniczone zapośredniczenie programowe. Więcej informacji o obsługiwaniu dodatkowych przypadków użycia automatyzacji mediów podamy w przyszłości.

Wybór reklam w Protected Audience jest przeprowadzany po pobraniu reklam kontekstowych, dlatego wywołanie interfejsu Protected Audience API może wpłynąć na całkowity czas oczekiwania na żądania reklam.