Formato dell'annuncio dell'SDK acquirente

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

L'inventario per app mobile dei publisher che integrano il tuo bidding adapter nella propria app può accettare offerte con il formato dell'annuncio visualizzato con l'SDK dell'acquirente. La modalità di visualizzazione dipende dall'implementazione dell'SDK e dall'oggetto SDKRenderedAd che invii nella risposta all'offerta.

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

Requisiti

Gli annunci con SDK dell'acquirente sono disponibili per gli acquirenti approvati. Puoi integrare direttamente Authorized Buyers con l'SDK Google Mobile Ads, inclusi la mediazione, gli adattatori di offerenti, e gli indicatori sicuri. Il publisher deve integrare il tuo SDK e il tuo adattatore nelle proprie app mobile.

Per ulteriori informazioni su questi punti di integrazione o per discutere di altre integrazioni di indicatori o elaborazioni on-device con l'SDK Google Mobile Ads per migliorare la pertinenza annuncio o la misurazione, contatta il tuo Technical Account Manager.

Ti consigliamo di inviare le creatività per la revisione prima di includerle in una risposta all'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 l'ID SDK che devi fornire nella risposta all'offerta con il campo BidRequest.app.ext.installed_sdk.id.

Puoi scoprire di più su questo argomento nella InstalledSdk documentazione di riferimento.

Mappatura delle unità pubblicitarie

Puoi utilizzare la richiesta di offerta per trovare le mappature delle unità pubblicitarie che corrispondono allo slot dell'offerta con il campo BidRequest.imp.ext.ad_unit_mapping.

Puoi scoprire di più su questo argomento nella AdUnitMapping documentazione di riferimento.

Indicatori sicuri

I publisher possono condividere indicatori sicuri con gli offerenti. Puoi trovarli in BidRequest.imp.ext.buyer_generated_request_data.data.

Puoi scoprire di più su come vengono rappresentati gli indicatori sicuri nella BuyerGeneratedRequestData documentazione di riferimento.

Richieste di prova

Puoi utilizzare il campo BidRequest.test per verificare se la richiesta di offerta è una prova.

Puoi scoprire di più su questo campo nella BidRequest documentazione di riferimento.

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

I seguenti campi sono obbligatori nella risposta all'offerta:

  • BidResponse.seatbid.bid.adomain
  • BidResponse.seatbid.bid.ext.billing_id
  • BidResponse.seatbid.bid.crid
  • BidResponse.seatbid.bid.w
  • BidResponse.seatbid.bid.h

Inoltre, la risposta all'offerta deve compilare BidResponse.seatbid.bid.ext.sdk_rendered_ad con quanto segue:

ID SDK

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

Puoi trovare l'ID in BidRequest.app.ext.installed_sdk.

Annuncio dichiarato

Utilizza BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad per fornire una creatività che soddisfi i requisiti indicati in BidRequest.imp.ext.creative_enforcement_settings e che sia rappresentativa dei dati di rendering dell'annuncio. Deve essere compilato solo uno dei seguenti campi: html_snippet, video_url, video_vast_xml o native_response.

Se non compili declared_ad, non possiamo esaminare la creatività e tutte le offerte con la creatività vengono filtrate dall'asta.

Puoi scoprire di più sull'annuncio dichiarato nella DeclaredAd documentazione di riferimento.

Dati di rendering

Utilizza il campo BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data per fornire i dati che l'SDK dell'acquirente deve utilizzare per visualizzare l'annuncio.

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

Ecco un esempio di oggetto SdkRenderedAd:

{
  "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 Offerte in tempo reale per inviare le creatività per la revisione prima di includerle in una risposta all'offerta.

Per ulteriori dettagli sui campi SdkRenderedAd, consulta la guida di OpenRTB.

Esempio di risposta all'offerta

Di seguito sono riportati esempi di risposte all'offerta per ogni formato dell'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"

Revisione delle creatività

Le creatività vengono esaminate prima di poter essere pubblicate per assicurarsi che rispettino le nostre norme e le impostazioni del publisher.

Ecco due modi per inviare le creatività per la revisione:

API Offerte in tempo reale (consigliata)

Puoi utilizzare il buyers.creatives.create metodo dell'API Offerte in tempo reale per inviare le creatività per la revisione.

L'API richiede un solo invio per creatività e ti consente di controllare lo stato della revisione 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à con SDK dell'acquirente per la revisione.

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

Per ulteriori dettagli, consulta la guida alle creatività per.