Annonces affichées par le SDK

Les annonces SDK de l'acheteur utilisent des créations affichées par votre propre SDK.

L'inventaire d'applications mobiles des éditeurs qui intègrent votre bidding adapter dans leur application peut accepter les enchères avec le format d'annonce affiché par le SDK de l'acheteur. L'affichage dépend de l'implémentation de votre SDK et de l'objet SDKRenderedAd que vous envoyez dans la réponse à l'enchère.

Vous pouvez placer une enchère incluant une annonce affichée par le SDK de l'acheteur ou tout autre format d'annonce compatible avec le SDK Google Mobile Ads, mais toutes les enchères contenant les deux sont filtrées.

Conditions requises

Les annonces SDK de l'acheteur sont disponibles pour les acheteurs approuvés. Ce format nécessite des efforts supplémentaires de votre part et de celle de l'éditeur. Contactez votre responsable de compte technique pour configurer votre compte pour les annonces SDK de l'acheteur. Vous pouvez ensuite implémenter un adaptateur d'enchères qui permet à votre SDK de communiquer avec le SDK Google Mobile Ads. L'éditeur doit intégrer votre SDK et votre adaptateur dans ses applications mobiles.

Nous vous recommandons d'envoyer les créations pour examen avant de les inclure dans une réponse à l'enchère. Contactez votre responsable de compte technique si vous ne connaissez pas le type de création au moment de l'enchère.

Si une demande d'enchère est compatible avec ce format d'annonce, vous pouvez spécifier une annonce qui s'affiche avec votre SDK en définissant le champ sdk_rendered_ad dans la réponse à l'enchère.

Demande d'enchère

Les demandes d'enchères pour l'inventaire d'applications mobiles incluent des informations sur les SDK et les adaptateurs de l'application de l'éditeur que vous pouvez utiliser pour l'affichage dans les champs suivants :

ID du SDK

Vous pouvez utiliser la demande d'enchère pour trouver l'ID du SDK que vous devez fournir dans la réponse à l'enchère avec le champ BidRequest.app.ext.installed_sdk.id.

Pour en savoir plus, consultez la documentation de référence InstalledSdk.

Mise en correspondance des blocs d'annonces

Vous pouvez utiliser la demande d'enchère pour trouver les mises en correspondance des blocs d'annonces qui correspondent à l'emplacement d'enchère avec le champ BidRequest.imp.ext.ad_unit_mapping.

Pour en savoir plus, consultez la documentation de référence AdUnitMapping.

Signaux sécurisés

Les éditeurs peuvent partager des signaux sécurisés avec les enchérisseurs. Vous pouvez les trouver dans BidRequest.imp.ext.buyer_generated_request_data.data.

Pour en savoir plus sur la représentation des signaux sécurisés, consultez la BuyerGeneratedRequestData documentation de référence.

Demandes de tests

Vous pouvez utiliser le champ BidRequest.test pour vérifier si la demande d'enchère est un test.

Pour en savoir plus sur ce champ, consultez la BidRequest documentation de référence.

Exemple de demande d'enchère

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>"
  ...
}

Réponse à l'enchère

Les champs suivants sont obligatoires dans la réponse à l'enchère :

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

De plus, votre réponse à l'enchère doit renseigner BidResponse.seatbid.bid.ext.sdk_rendered_ad avec les éléments suivants :

ID du SDK

Utilisez le champ id pour fournir l'ID du SDK afin d'afficher l'annonce.

Vous trouverez l'ID dans BidRequest.app.ext.installed_sdk.

Annonce déclarée

Utilisez BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad pour fournir une création qui répond aux exigences de BidRequest.imp.ext.creative_enforcement_settings et qui est représentative des données d'affichage de l'annonce. Seul l'un des champs html_snippet, video_url, video_vast_xml ou native_response doit être renseigné.

Si vous ne renseignez pas declared_ad, nous ne pourrons pas examiner la création et toutes les enchères associées seront exclues de la mise en concurrence.

Pour en savoir plus sur l'annonce déclarée, consultez la documentation de référence DeclaredAd.

Données d'affichage

Utilisez le champ BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data pour fournir les données que le SDK de l'acheteur utilisera pour afficher votre annonce.

Les enchères visant à placer une annonce SDK de l'acheteur doivent spécifier une création dans le champ declared_ad. L'annonce déclarée doit représenter précisément les rendering_data.

Voici un exemple d'objet 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>",
  }
}

Nous vous recommandons d'utiliser l'API d'enchères en temps réel pour envoyer les créations pour examen avant de les inclure dans une réponse à l'enchère.

Pour en savoir plus sur les champs SdkRenderedAd, consultez le guide OpenRTB.

Exemple de réponse à l'enchère

Voici des exemples de réponses à l'enchère pour chaque format d'annonce :

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"

Interstitiel

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"

Annonce vidéo avec récompense

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"

Natif

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"

Vérification des créations

Les créations sont examinées avant de pouvoir être diffusées afin de s'assurer qu'elles respectent nos règles et les paramètres de l'éditeur.

Voici deux façons d'envoyer des créations pour examen :

API d'enchères en temps réel (recommandée)

Vous pouvez utiliser la buyers.creatives.create méthode de l'API d'enchères en temps réel pour envoyer des créations pour examen.

L'API ne nécessite qu'un seul envoi par création et vous permet de vérifier l'état de l'examen de votre création.

Réponse à l'enchère

Vous pouvez envoyer de nouvelles créations directement dans la réponse à l'enchère.

Vous devez utiliser le champ declared_ad de l'objet SdkRenderedAd pour envoyer une réponse à l'enchère avec une création SDK de l'acheteur pour examen.

Les créations envoyées dans la réponse à l'enchère ne sont examinées qu'après de nombreuses enchères. Toutes les enchères placées avant la fin de l'examen sont exclues de la mise en concurrence. Vous pouvez utiliser l'interface d'enchères en temps réel ou l'API d'enchères en temps réel pour vérifier l'état d'une création une fois l'examen commencé.

Pour en savoir plus, consultez le guide sur les créations pour.

Autres intégrations du SDK Google Mobile Ads

Les Authorized Buyers disposent de plusieurs options pour s'intégrer directement au SDK Google Mobile Ads, y compris la médiation, les adaptateurs d'enchérisseurs et les signaux sécurisés. Pour en savoir plus sur ces points d'intégration ou pour discuter d'autres intégrations de signaux ou de traitement sur l'appareil avec le SDK Google Mobile Ads afin d'améliorer la pertinence ou la mesure des annonces, contactez votre responsable de compte technique.