检索有关广告响应的信息

出于调试和日志记录目的,成功加载的广告会提供 ResponseInfo 对象。除了用于加载广告的中介广告瀑布流的相关信息外,此对象还包含它所加载的广告的相关信息。

如果广告加载成功,广告对象会使用 getResponseInfo() 方法。例如,InterstitialAd.getResponseInfo() 可获取已加载的插页式广告的响应信息。

如果广告加载失败且系统只显示错误,可通过 LoadAdError.getResponseInfo() 获取响应信息。

Java

@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
  ResponseInfo responseInfo = interstitialAd.getResponseInfo();
  Log.d(TAG, responseInfo.toString());
}

@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
  ResponseInfo responseInfo = loadAdError.getResponseInfo();
  Log.d(TAG, responseInfo.toString());
}

Kotlin

override fun onAdLoaded(interstitialAd: InterstitialAd)) {
  val responseInfo = interstitialAd.responseInfo
  Log.d(TAG, responseInfo.toString())
}

override fun onAdFailedToLoad(adError: LoadAdError) {
  val responseInfo = adError.responseInfo
  Log.d(TAG, responseInfo.toString())
}

响应信息

以下是 ResponseInfo.toString() 返回的输出示例,显示了针对已加载的广告返回的调试数据:

{
  "Response ID": "COOllLGxlPoCFdAx4Aod-Q4A0g",
  "Mediation Adapter Class Name": "com.google.ads.mediation.admob.AdMobAdapter",
  "Adapter Responses": [
    {
      "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"
    }
  ],
  "Loaded Adapter Response": {
    "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"
  },
  "Response Extras": {
    "mediation_group_name": "Campaign"
  }
}

针对 ResponseInfo 对象的方法包括:

方法 说明
getAdapterResponses 返回 AdapterResponseInfo 列表,其中包含广告响应中包含的每个适配器的元数据。可用于调试广告瀑布流中介和出价的执行情况。该列表的顺序与此广告请求的中介广告瀑布流的顺序一致。

如需了解详情,请参阅适配器响应信息

getLoadedAdapterResponseInfo 返回与加载广告的适配器对应的 AdapterResponseInfo
getMediationAdapterClassName 返回加载了广告的广告联盟的中介适配器类名称。
getResponseId 响应标识符是广告响应的唯一标识符。此标识符可用于在广告审核中心 (ARC) 中识别和屏蔽广告。
getResponseExtras

返回有关广告响应的额外信息。 Extras 可能会返回以下键:

  • mediation_group_name:中介组的名称
  • mediation_ab_test_name中介 A/B 测试的名称(如果适用)
  • mediation_ab_test_variant:中介 A/B 测试中使用的变体(如果适用)

Java

@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
  MyActivity.this.interstitialAd = interstitialAd;

  ResponseInfo responseInfo = interstitialAd.getResponseInfo();
  String responseId = responseInfo.getResponseId();
  String mediationAdapterClassName = responseInfo.getMediationAdapterClassName();
  List<AdapterResponseInfo> adapterResponses = responseInfo.getAdapterResponses();
  AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.getLoadedAdapterResponseInfo();
  Bundle extras = responseInfo.getResponseExtras();
  String mediationGroupName = extras.getString("mediation_group_name");
  String mediationABTestName = extras.getString("mediation_ab_test_name");
  String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
}

Kotlin

override fun onAdLoaded(interstitialAd: InterstitialAd)) {
  val responseInfo = interstitialAd.responseInfo

  val responseId = responseInfo.responseId
  val mediationAdapterClassName = responseInfo.mediationAdapterClassName
  val adapterResponses = responseInfo.adapterResponses
  val loadedAdapterResponseInfo = responseInfo.loadedAdapterResponseInfo
  val extras = responseInfo.responseExtras
  val mediationGroupName = extras.getString("mediation_group_name")
  val mediationABTestName = extras.getString("mediation_ab_test_name")
  val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
}

适配器响应信息

AdapterResponseInfo 包含广告响应中包含的每个适配器的元数据,可用于调试广告瀑布流中介和出价的执行情况。该列表的顺序与广告请求的中介广告瀑布流的顺序一致。

AdapterResponseInfo 输出示例如下:

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

对于每个广告联盟,AdapterResponseInfo 都提供了以下方法:

方法 说明
getAdError 获取与向广告网络发出的请求相关的错误。如果广告联盟成功加载广告或未尝试加载广告,则返回 null
getAdSourceId 获取与此适配器响应相关联的广告来源 ID。 对于广告系列,系统会针对参与中介的广告广告系列目标类型返回 6060308706800320801,而对于展示和点击目标类型,会返回 7068401028668408324。如需查看广告联盟投放广告时可能出现的广告来源 ID 的列表,请参阅广告来源
getAdSourceInstanceId 获取与此适配器响应相关联的广告来源实例 ID。
getAdSourceInstanceName 获取与此适配器响应相关联的广告来源实例名称。
getAdSourceName 获取表示投放展示的特定广告联盟的广告来源。 对于广告系列,系统会针对参与中介的广告广告系列目标类型返回 Mediated House Ads,针对展示和点击目标类型返回 Reservation Campaign。如需查看广告联盟投放广告时可用的广告来源名称的列表,请参阅广告来源
getAdapterClassName 获取加载广告的适配器的类名称。
getCredentials 通过 AdMob 界面获取设置的网络配置。
getLatencyMillis 获取广告网络加载广告所用的时间。如果广告联盟未尝试加载,则返回 0

Java

@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
  AdapterResponseInfo loadedAdapterResponseInfo =
      interstitialAd.getResponseInfo().getLoadedAdapterResponseInfo();

  AdError adError = loadedAdapterResponseInfo.getAdError();
  String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
  String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();
  String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
  String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
  String adapterClassName = loadedAdapterResponseInfo.getAdapterClassName();
  Bundle credentials = loadedAdapterResponseInfo.getCredentials();
  long latencyMillis = loadedAdapterResponseInfo.getLatencyMillis();
}

Kotlin

override fun onAdLoaded(interstitialAd: InterstitialAds) {
  val loadedAdapterResponseInfo = interstitialAd.responseInfo.loadedAdapterResponse

  val adError = loadedAdapterResponseInfo.adError
  val adSourceId = loadedAdapterResponseInfo.adSourceId
  val adSourceInstanceId = loadedAdapterResponseInfo.adSourceInstanceId
  val adSourceInstanceName = loadedAdapterResponseInfo.adSourceInstanceName
  val adSourceName = loadedAdapterResponseInfo.adSourceName
  val adapterClassName = loadedAdapterResponseInfo.adapterClassName
  val credentials = loadedAdapterResponseInfo.credentials
  val latencyMillis = loadedAdapterResponseInfo.latencyMillis
}