Formato dell'annuncio dell'SDK acquirente

Gli annunci SDK dell'acquirente utilizzano creatività visualizzate dal tuo SDK.

L'inventario per app mobile dei publisher che integrano l'adattatore offerta nella propria app può accettare offerte con il formato dell'annuncio visualizzato tramite l'SDK dell'acquirente. Il modo in cui vengono visualizzati si basa sull'implementazione dell'SDK e sul SDKRenderedAd specificato nella risposta all'offerta.

Puoi fare un'offerta che include un annuncio visualizzato con l'SDK dell'acquirente o qualsiasi altro formato di annuncio supportato dall'SDK Google Mobile Ads, ma tutte le offerte contenenti entrambi vengono filtrate.

Requisiti

Gli annunci SDK degli acquirenti sono disponibili per gli acquirenti approvati. Questo formato richiede un maggiore impegno da parte tua e del publisher. Contatta il tuo Technical Account Manager per configurare il tuo account per gli annunci SDK dell'acquirente. Puoi quindi implementare un adattatore offerte che consente al tuo SDK di comunicare con l'SDK Google Mobile Ads. Il publisher deve integrare l'SDK e l'adattatore nelle app mobile.

Ti consigliamo di inviare le creatività per la revisione prima di includerle in una risposta all'offerta. Contatta il tuo Technical Account Manager se non conosci il tipo di creatività al momento dell'offerta.

Se una richiesta di offerta supporta questo formato dell'annuncio, puoi specificare un annuncio che viene visualizzato con il tuo SDK impostando il campo sdk_rendered_ad nella risposta all'offerta.

Richiesta di offerta

Le richieste di offerta per l'inventario per app mobile includono dettagli sugli SDK e sugli adattatori nell'app del publisher che puoi utilizzare per il rendering nei seguenti campi:

ID SDK

Puoi utilizzare la richiesta di offerta per trovare il id da fornire nella risposta all'offerta per un annuncio visualizzato dall'SDK dell'acquirente.

Esamina i seguenti campi:

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

Puoi scoprire di più sul messaggio InstalledSdk nelle guide sui protocolli Google e OpenRTB.

Mappatura delle unità pubblicitarie

Puoi utilizzare la richiesta di offerta per leggere le mappature delle unità pubblicitarie che corrispondono all'area dell'offerta.

Esamina i seguenti campi:

  • Authorized Buyers: BidRequest.AdSlot.ad_unit_mapping
  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping

Puoi scoprire di più sull'oggetto AdUnitMapping nelle guide ai protocolli Google e OpenRTB.

Indicatori sicuri

Dovresti leggere l'oggetto ID esteso, che è l'estensione standard utilizzata per il passaggio di indicatori sicuri scelti dal publisher.

Esamina i seguenti campi:

  • Authorized Buyers: BidRequest.AdSlot.SecureSignal.data
  • OpenRTB: BidRequest.user.ext.eids.uids.id

Puoi scoprire di più sull'oggetto Extended Id nelle guide ai protocolli Google e OpenRTB.

Richieste di test

Puoi leggere il campo Richiesta di test per capire se la richiesta di offerta è un test.

Esamina i seguenti campi:

  • Authorized Buyers: BidRequest.is_test
  • OpenRTB: BidRequest.test

Puoi trovare ulteriori informazioni sul campo Test nelle guide sui protocolli Google e OpenRTB.

Esempio di richiesta di offerta

id: "<bid_request_id>"
imp {
  id: "1"
  banner {
    w: 320
    h: 50
    ...
  }
...
  adx_ext {
   ...
    ad_unit_mapping {
      keyvals {
        key: "key_1"
        value: "value_1"
      }
      keyvals {
        key: "key_2"
        value: "value_2"
      }
      ...
      format: FORMAT_BANNER
    }
  }
}
app {
 ...
  adx_ext {
    installed_sdk {
      id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
      sdk_version {
        major: 1
        minor: 2
        micro: 30
      }
      adapter_version {
        major: 1
        minor: 2
        micro: 3000
      }
    }
    installed_sdk {
    ...
    }
    ...
  }
}
device {
  ...
}
user {
  ...
  }
  adx_ext {
    eids {
      source: "com.google.ads.mediation.partner.PartnerMediationAdapter"
      uids {
        id: "<partner_signal_string>"
      }
    }
  }
}
at: 1
tmax: 1000
cur: "USD"
test: 1
...
adx_ext {
  google_query_id: "<query_string>"
  ...
}

Risposta all'offerta

Offerta per utenze

I seguenti campi sono obbligatori nell'oggetto BidResponse.seatbid.bid:

  • Authorized Buyers:

    • BidResponse.Ad.click_through_url
    • BidResponse.Ad.AdSlot.billing_id
    • BidResponse.Ad.buyer_creative_id
    • BidResponse.Ad.width
    • BidResponse.Ad.height
  • OpenRTB:

    • BidResponse.seatbid.bid.adomain
    • BidResponse.seatbid.bid.cid
    • BidResponse.seatbid.bid.crid
    • BidResponse.seatbid.bid.w
    • BidResponse.seatbid.bid.h

Puoi scoprire di più sul messaggio SeatBid nelle guide sui protocolli Google e OpenRTB.

La risposta all'offerta deve includere un SdkRenderedAd con quanto segue:

ID SDK

Utilizza il campo id per fornire l'ID dell'SDK per il rendering dell'annuncio.

Puoi trovare l'ID nella richiesta di offerta con i seguenti campi:

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

Puoi scoprire di più sul messaggio InstalledSdk nelle guide sui protocolli Google e OpenRTB.

Annuncio dichiarato

Utilizza un campo declared_ad per fornire una creatività che soddisfi i requisiti CreativeEnforcementSettings della richiesta di offerta e che sia rappresentativa dei dati di rendering dell'annuncio. Per i formati di annunci non nativi, deve essere presentato solo uno tra html_snippet, video_url o video_vast_xml. Per il formato dell'annuncio nativo, deve essere presentato solo native_response.

Se non compili declared_ad, non siamo in grado di esaminare la creatività e tutte le offerte contenenti la creatività vengono filtrate dall'asta.

Dati di rendering

Utilizza il campo rendering_data per fornire i dati che l'SDK dell'acquirente utilizza per visualizzare l'annuncio.

  • Authorized Buyers: BidResponse.ad.sdk_rendered_ad.rendering_data
  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data

Le offerte per posizionare un annuncio SDK dell'acquirente devono specificare una creatività nel campo declared_ad. L'annuncio dichiarato deve rappresentare con precisione rendering_data.

Ecco un oggetto SdkRenderedAd di esempio:

{
  "id": "1234567",
  "rendering_data": "\xd58...,\xd4\x89\xd\xf9",
  "declared_ad": {
    "html_snippet": "<iframe src=\"https://example.com/ads?id=123&
      curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
  }
}

Ti consigliamo di utilizzare l'API Real-time Bidding per inviare le creatività per la revisione prima di includerle in una risposta all'offerta.

Per ulteriori dettagli sui campi SdkRenderedAd, consulta le guide sui protocolli Google e OpenRTB.

Esempio di risposta all'offerta

Di seguito sono riportati esempi di risposte all'offerta per ciascun formato di annuncio:

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 99
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 320
    h: 50
    burl: "https://abc.com/billing?td=fn&win_price=${AUCTION_PRICE}"
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          html_snippet: "<!doctype html> <html> ... </html>"
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
      billing_id: 141763360450
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Interstitial

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 400
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 412
    h: 775
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          video_vast_xml: "<VAST version=\"2.0\"><Ad>...</Ad></VAST>"
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Video con premio

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 400
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 412
    h: 775
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          video_vast_xml: "<VAST version=\"2.0\"><Ad>...</Ad></VAST>"
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Nativo

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 400
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 1200
    h: 627
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          native_response {
            ...
            assets {
              id: 1
              title {
                text: ""
              }
            }
            assets {
              id: 2
              data {
                value: "<some_string>"
              }
            }
            assets {
              id: 3
              data {
                value: "View now"
              }
            }
            assets {
              id: 4
              img {
                url: "<valid_image_url>"
                w: 1200
                h: 627
                type: 3
              }
            }
            assets {
              id: 5
              img {
                url: "<valid_image_url>"
                w: 100
                h: 100
                type: 1
              }
            }
            assets {
              id: 6
              data {
                value: ""
              }
            }
            assets {
              id: 7
              data {
                value: "<some_string>"
              }
            }
            link {
              url: "<destination_link>"
            }
          }
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Verifica delle creatività

Le creatività vengono esaminate prima di poter essere pubblicate per garantire che siano conformi alle nostre norme e alle impostazioni del publisher.

Puoi inviare le creatività per la revisione in due modi:

API Real-time Bidding (consigliata)

Puoi usare il metodo buyers.creatives.create dell'API Real-time Bidding per inviare le creatività per la revisione.

L'API richiede un solo invio per creatività e consente di controllare lo stato della verifica della creatività.

Risposta all'offerta

Puoi inviare nuove creatività direttamente nella risposta all'offerta.

Devi utilizzare il campo declared_ad dell'oggetto SdkRenderedAd per inviare una risposta all'offerta con una creatività SDK dell'acquirente per la revisione.

Le creatività inviate nella risposta all'offerta vengono esaminate solo dopo molte offerte. Tutte le offerte fatte prima del completamento della revisione vengono escluse dall'asta. Puoi utilizzare l'interfaccia delle offerte in tempo reale o l'API delle offerte in tempo reale per controllare lo stato di una creatività dopo l'inizio della revisione.

Consulta la guida alle creatività per ulteriori dettagli.