Format d'annonce du SDK de l'acheteur

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

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

Conditions requises

Les annonces SDK d'acheteurs sont disponibles pour les acheteurs approuvés. Ce format nécessite des 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 une stratégie 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 leurs applis mobiles.

Nous vous recommandons d'envoyer des créations pour avis 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 accepte ce format d'annonce, vous pouvez spécifier une annonce qui s'affichera avec votre SDK en définissant le champ sdk_rendered_ad dans l'enchère de réponse.

Demande d'enchère

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

ID du SDK

Vous pouvez utiliser la demande d'enchère pour identifier l'id à indiquer dans l'enchère. pour une annonce affichée par le SDK de l'acheteur.

Consultez les champs suivants:

  • OpenRTB: BidRequest.app.ext.installed_sdk
  • Protocole Google RTB (obsolète): BidRequest.mobile.installed_sdk

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

Mise en correspondance des blocs d'annonces

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

Consultez les champs suivants:

  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping
  • Protocole Google RTB (obsolète): BidRequest.AdSlot.ad_unit_mapping

Pour en savoir plus sur l'objet AdUnitMapping, consultez la OpenRTB et Google guides du protocole.

Signaux sécurisés

Les éditeurs peuvent partager des signaux sécurisés avec des enchérisseurs. Vous pouvez les lire à partir de L'objet BuyerGeneratedRequestData d'OpenRTB ou de l'objet Google L'objet SecureSignal du protocole d'enchères en temps réel.

Consultez les champs suivants:

  • OpenRTB: BidRequest.imp.ext.buyer_generated_request_data.data
  • Protocole Google RTB (obsolète): BidRequest.AdSlot.SecureSignal.data

Pour en savoir plus sur la représentation des signaux sécurisés dans le document OpenRTB et Google guides du protocole.

Requêtes de test

Vous pouvez lire le champ Demande test pour déterminer si la demande d'enchère est un test.

Consultez les champs suivants:

  • OpenRTB: BidRequest.test
  • Protocole Google RTB (obsolète): BidRequest.is_test

Pour en savoir plus sur le champ Test, consultez la OpenRTB et Google guides du protocole.

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:

  • OpenRTB:
    • BidResponse.seatbid.bid.adomain
    • BidResponse.seatbid.bid.ext.billing_id
    • BidResponse.seatbid.bid.crid
    • BidResponse.seatbid.bid.w
    • BidResponse.seatbid.bid.h
  • Protocole Google RTB (obsolète):
    • BidResponse.Ad.click_through_url
    • BidResponse.Ad.AdSlot.billing_id
    • BidResponse.Ad.buyer_creative_id
    • BidResponse.Ad.width
    • BidResponse.Ad.height

En outre, votre réponse à l'enchère doit inclure un élément SdkRenderedAd avec le paramètre suivantes:

ID du SDK

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

Vous pouvez trouver l'ID dans la demande d'enchère dans les champs suivants:

  • OpenRTB: BidRequest.app.ext.installed_sdk
  • Protocole Google RTB (obsolète): BidRequest.mobile.installed_sdk

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

Annonce déclarée

Utilisez un champ declared_ad pour fournir une création qui correspond à la CreativeEnforcementSettings et est représentatif des des données de rendu. Un seul des éléments suivants : html_snippet, video_url, video_vast_xml ou native_response doit être renseigné.

Si vous n'incluez pas declared_ad, nous ne pouvons pas examiner la création ni toutes les enchères associées à la création sont exclues de la mise en concurrence.

Données de rendu

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

  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
  • Protocole Google RTB (obsolète): BidResponse.ad.sdk_rendered_ad.rendering_data

Les enchères visant à placer une annonce SDK de l'acheteur doivent spécifier une création dans l'declared_ad. . L'annonce déclarée doit représenter précisément l'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 des créations pour avis avant de les inclure dans une réponse à l'enchère.

Consultez le Google et Guides du protocole 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 font l'objet d'un examen avant de pouvoir être diffusées afin de vérifier qu'elles respectent nos Règles et paramètres paramètres.

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

API Real-time Bidding (recommandé)

Vous pouvez utiliser buyers.creatives.create de l'API Real-time Bidding pour envoyer vos créations pour examen.

L'API ne requiert qu'un seul envoi par création et vous permet de vérifier de 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 filtrées et exclues de la mise en concurrence. Vous pouvez utiliser l'interface d'enchères en temps réel. ou les enchères en temps réel API pour vérifier l'état d'une création une fois l'examen commencé.

Consultez le guide des créations pour découvrir plus de détails.