Format d'annonce du SDK de l'acheteur

Les annonces du 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 adaptateur d'enchères à leur application peuvent accepter les enchères avec le format d'annonce affiché par le SDK de l'acheteur. Leur affichage dépend de l'implémentation de votre SDK et du SDKRenderedAd que vous envoyez dans la réponse à l'enchère.

Vous pouvez définir une enchère qui inclut soit une annonce diffusée par le SDK de l'acheteur, soit tout autre format d'annonce compatible avec le SDK Google Mobile Ads. Toutefois, toutes les enchères contenant les deux sont filtrées.

Conditions requises

Les acheteurs approuvés peuvent accéder aux annonces de SDK de l'acheteur. Ce format demande à l'éditeur et à vous-même des efforts supplémentaires. Contactez votre responsable de compte technique afin de 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 à 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. Pour ce faire, définissez 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 que vous devez fournir dans la réponse à l'enchère d'une annonce diffusée par le SDK de l'acheteur.

Consultez les champs suivants:

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

Pour en savoir plus sur le message InstalledSdk, consultez les guides de protocole Google et OpenRTB.

Mappage de bloc d'annonces

Vous pouvez utiliser la demande d'enchère pour consulter les mises en correspondance de blocs d'annonces qui correspondent à l'emplacement de l'enchère.

Consultez les champs suivants:

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

Pour en savoir plus sur l'objet AdUnitMapping, consultez les guides concernant les protocoles Google et OpenRTB.

Signaux sécurisés

Vous devez lire l'objet "Extended Id", qui est l'extension standard utilisée pour transmettre des signaux sécurisés choisis par l'éditeur.

Consultez les champs suivants:

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

Pour en savoir plus sur l'objet Extended Id, consultez les guides concernant les protocoles Google et OpenRTB.

Requêtes de test

Vous pouvez lire le champ "Demande de test" pour savoir s'il s'agit d'un test.

Consultez les champs suivants:

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

Pour en savoir plus sur le champ Test, consultez les guides concernant les protocoles Google et OpenRTB.

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

Enchère pour le siège

Les champs suivants sont obligatoires dans l'objet 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

Pour en savoir plus sur le message SeatBid, consultez les guides de protocole Google et OpenRTB.

Votre réponse à l'enchère doit inclure un élément SdkRenderedAd avec les éléments suivants:

ID du SDK

Utilisez le champ id pour fournir l'ID permettant au SDK d'afficher l'annonce.

Vous trouverez cet ID dans la demande d'enchère à l'aide des champs suivants:

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

Pour en savoir plus sur le message InstalledSdk, consultez les guides de protocole Google et OpenRTB.

Annonce déclarée

Utilisez un champ declared_ad pour fournir une création qui répond aux exigences CreativeEnforcementSettings de la demande d'enchère et qui soit représentative des données de rendu de l'annonce. Pour les formats d'annonces non natives, seul l'un des formats html_snippet, video_url ou video_vast_xml doit être présenté. Pour le format d'annonce native, seul native_response doit être présenté.

Si vous n'insérez pas le champ declared_ad, nous ne pouvons pas examiner la création, et toutes les enchères associées à celle-ci sont exclues de la mise aux enchères.

Rendu des données

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

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

Les enchères visant à placer une annonce de 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 la 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 Real-time Bidding pour envoyer les créations pour examen avant de les inclure dans une réponse à l'enchère.

Consultez les guides des protocoles Google et OpenRTB pour en savoir plus sur les champs SdkRenderedAd.

Exemple de réponse à l'enchère

Voici des exemples de réponses aux enchères 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 vérifier 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 Real-time Bidding (recommandé)

Vous pouvez utiliser la méthode buyers.creatives.create de l'API Real-time Bidding 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 un grand nombre d'enchères. Toutes les enchères placées avant la fin de l'examen sont exclues de la mise en concurrence. Une fois l'examen commencé, vous pouvez utiliser l'interface d'enchères en temps réel ou l'API Real-time Bidding pour vérifier l'état d'une création.

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