Как получить информацию об ответе на запрос объявления

Для отладки и ведения журналов успешно загруженные объявления предоставляют объект ResponseInfo. Этот объект содержит информацию о загруженном объявлении, а также о каскаде медиации, который использовался для загрузки объявления.

Если объявление загружается успешно, у объекта объявления есть метод GetResponseInfo(). Например, InterstitialAd.GetResponseInfo() получает информацию об ответе для загруженного межстраничного объявления.

Если объявления не загружаются и доступна только ошибка, информацию об ответе можно получить с помощью AdFailedToLoadEventArgs.LoadAdError.GetResponseInfo().

InterstitialAd ad;

private void RequestInterstitial()
{
    ad = new InterstitialAd("AD_UNIT_ID");
    this.interstitial.OnAdLoaded += OnAdLoaded;
    this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    AdRequest request = new AdRequest.Builder().Build();
    this.interstitial.LoadAd(request);
}

private void OnAdLoaded(object sender, EventArgs args)
{
    ResponseInfo info = ad.GetResponseInfo();
}

private void OnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    ResponseInfo info = args.LoadAdError.GetResponseInfo();
}

Информация об ответе

Ниже приведен пример выходных данных, возвращаемых тегом ResponseInfo.ToString(), в которых показаны данные отладки, возвращенные для загруженного объявления:

Android

{
  "Response ID": "NI3BZZDbGdyQtOUP4o21gAM",
  "Mediation Adapter Class Name": "com.google.ads.mediation.admob.AdMobAdapter",
  "Adapter Responses": [
    {
      "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
      "Latency": 3585,
      "Ad Source Name": "AdMob Network",
      "Ad Source ID": "",
      "Ad Source Instance Name": "AdMob (default)",
      "Ad Source Instance ID": "",
      "Credentials": {
        "pubid": "ca-pub-9939518381636264//21775744923/example/rewarded-interstitial/cak=no_cache&cadc=8e&caqid=NI3BZfDhGICQtOUP7ayS4Aw"
      },
      "Ad Error": "null"
    }
  ],
  "Loaded Adapter Response": {
    "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
    "Latency": 3585,
    "Ad Source Name": "AdMob Network",
    "Ad Source ID": "",
    "Ad Source Instance Name": "AdMob (default)",
    "Ad Source Instance ID": "",
    "Credentials": {
      "pubid": "ca-app-pub-3940256099942544\/9257395921\/cak=no_cache&cadc=8e&caqid=NI3BZfDhGICQtOUP7ayS4Aw"
    },
    "Ad Error": "null"
  },
  "Response Extras": {
    "creative_id": "138471856178",
    "line_item_id": "6707237225",
  }
}

iOS

** Response Info **
    Response ID: BmnCZaSbE_6Mur8P5su8gAY
    Network: GADMAdapterGoogleAdMobAds

  ** Loaded Adapter Response **
    Network: GADMAdapterGoogleAdMobAds
    Ad Source Name:AdMob Network
    Ad Source ID:
    Ad Source Instance Name:AdMob (default)
    Ad Source Instance ID:AdMob (default)
    AdUnitMapping:
{
    pubid = "ca-pub-9939518381636264//21775744923/example/rewarded-interstitial/cak=no_cache&cadc=b0&caqid=BmnCZZjMEvzpkPIP5cWfQA";
}
    Error: (null)
    Latency: 2.724

  ** Extras Dictionary **
    {
        "creative_id" = "138471856178";
        "line_item_id" = "6707237225";
    }

  ** Mediation line items **
    Entry (1)
    Network: GADMAdapterGoogleAdMobAds
    Ad Source Name:AdMob Network
    Ad Source ID:
    Ad Source Instance Name:AdMob (default)
    Ad Source Instance ID:AdMob (default)
    AdUnitMapping:
{
    pubid = "ca-pub-9939518381636264//21775744923/example/rewarded-interstitial/cak=no_cache&cadc=b0&caqid=BmnCZZjMEvzpkPIP5cWfQA";
}
    Error: (null)
    Latency: 2.724

Методы объекта ResponseInfo:

Метод Описание
GetAdapterResponses Возвращает список AdapterResponseInfo, содержащих метаданные для каждого адаптера, включенного в ответ на запрос объявления. Может использоваться для отладки каскадной медиации и назначения ставок. Порядок в списке соответствует порядку в каскаде медиации для этого запроса объявления.

Подробнее об информации об ответе адаптера…

GetLoadedAdapterResponseInfo Возвращает значение AdapterResponseInfo, соответствующее адаптеру, который загрузил объявление.
GetMediationAdapterClassName Возвращает название класса адаптера медиации рекламной сети, которая загрузила объявление.
GetResponseId Идентификатор ответа – это уникальный идентификатор ответа на запрос объявления. С помощью идентификатора можно найти и заблокировать объявление в Центре проверки объявлений.
GetResponseExtras Возвращает дополнительную информацию об ответе на запрос объявления. Дополнительные данные могут возвращать следующие ключи:
  • creative_id – идентификатор креатива выбранного объявления. Возвращается только для объявлений с резервированием.
  • line_item_id – идентификатор позиции выбранного объявления. Возвращается только для объявлений с резервированием.

Ниже приведен пример считывания значений из загруженного объекта ResponseInfo.

private void OnAdLoaded(object sender, EventArgs args)
{
  ResponseInfo info = ad.GetResponseInfo();

  string responseId = responseInfo.GetResponseId();
  string mediationAdapterClassName = responseInfo.GetMediationAdapterClassName();
  List<AdapterResponseInfo> adapterResponses = responseInfo.GetAdapterResponses();
  AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.GetLoadedAdapterResponseInfo();
  Dictionary<string, string> extras = responseInfo.GetResponseExtras();
  string creativeId = extras["creative_id"];
  string lineItemId = extras["line_item_id"];
}

Информация об ответе адаптера

AdapterResponseInfo содержит метаданные для каждого адаптера, включенного в ответ на запрос объявления. Эти метаданные можно использовать для отладки каскадной медиации и назначения ставок. Порядок в списке соответствует порядку в каскаде медиации для запроса объявления.

Вот пример результата, возвращенного запросом AdapterResponseInfo:

Android

{
  "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
  "Latency": 328,
  "Ad Source Name": "Reservation campaign",
  "Ad Source ID": "7068401028668408324",
  "Ad Source Instance Name": "[DO NOT EDIT] Publisher Test Interstitial",
  "Ad Source Instance ID": "4665218928925097",
  "Credentials": {},
  "Ad Error": "null"
}

iOS

  Network: GADMAdapterGoogleAdMobAds
  Ad Source Name: Reservation campaign
  Ad Source ID: 7068401028668408324
  Ad Source Instance Name: [DO NOT EDIT] Publisher Test Interstitial
  Ad Source Instance ID: [DO NOT EDIT] Publisher Test Interstitial
  AdUnitMapping:
  {
  }
  Error: (null)
  Latency: 0.391

Для каждой рекламной сети AdapterResponseInfo предоставляет следующие методы:

Метод Описание
AdError Возвращает ошибку, связанную с запросом к сети. Возвращает null, если сеть успешно загрузила объявление или если попытка не была предпринята.
AdSourceId Возвращает идентификатор источника объявлений, связанный с ответом адаптера. Для кампаний 6060308706800320801 возвращается для типа цели кампании "Агрегируемые объявления", а 7068401028668408324 – для типов целей "Показы" и "Клики". Список возможных идентификаторов источников объявлений, когда объявление показывается рекламной сетью, приведен в статье Источники объявлений.
AdSourceInstanceId Возвращает идентификатор экземпляра источника объявлений, связанный с ответом адаптера.
AdSourceInstanceName Возвращает название экземпляра источника объявлений, связанного с этим ответом адаптера.
AdSourceName Получает источник объявления, представляющий определенную рекламную сеть, которая выполняет показ. Для кампаний Mediated House Ads возвращается для типа цели кампании "Агрегируемые объявления", а Reservation Campaign – для типов целей "Показы" и "Клики". Список возможных названий источников объявлений, когда объявление показывается рекламной сетью, приведен в разделе Источники объявлений.
AdapterClassName Получает название класса, идентифицирующее рекламную сеть.
AdUnitMapping Получает конфигурацию сети, заданную в интерфейсе AdMob.
LatencyMillis Получает время, затраченное рекламной сетью на загрузку объявления. Если попытка подключения к сети не была предпринята, возвращает значение 0.

Вот пример чтения значений из загруженного объекта AdapterResponseInfo:

private void OnAdLoaded(object sender, EventArgs args)
{
  ResponseInfo responseInfo = ad.GetResponseInfo();
  AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.getLoadedAdapterResponseInfo();

  AdError adError = loadedAdapterResponseInfo.AdError;
  string adSourceId = loadedAdapterResponseInfo.AdSourceId;
  string adSourceInstanceId = loadedAdapterResponseInfo.AdSourceInstanceId;
  string adSourceInstanceName = loadedAdapterResponseInfo.AdSourceInstanceName;
  string adSourceName = loadedAdapterResponseInfo.AdSourceName;
  string adapterClassName = loadedAdapterResponseInfo.AdapterClassName;
  Dictionary<string, string> credentials = loadedAdapterResponseInfo.AdUnitMapping;
  long latencyMillis = loadedAdapterResponseInfo.LatencyMillis;
}