检索有关广告响应的信息

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

如果广告加载成功,广告对象具有 GADResponseInfo 属性。例如,GADInterstitialAd.responseInfo 可获取已加载的插页式广告的响应信息。

如果广告加载失败,并且系统只显示了错误,可以使用错误的 userInfo 字典中的键 GADErrorUserInfoKeyResponseInfo 获取 GADResponseInfo

Swift

fileprivate func loadInterstitial() {
  GADInterstitialAd.load(
    withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: request
  ) { (ad, error) in
    if let error = error {
      let responseInfo = (error as NSError).userInfo[GADErrorUserInfoKeyResponseInfo] as? GADResponseInfo
      print("\(String(describing: responseInfo))")
      return
    }
    let responseInfo = ad?.responseInfo
    print("\(String(describing: responseInfo))")
  }
}

Objective-C

- (void)loadInterstitial {
  [GADInterstitialAd
   loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
   request:request
   completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      GADResponseInfo *responseInfo = error.userInfo[GADErrorUserInfoKeyResponseInfo];
      NSLog(@"%@", responseInfo.description);
      return;
    }
    GADResponseInfo *responseInfo = ad.responseInfo;
    NSLog(@"%@", responseInfo.description);
  }];
}

响应信息

以下示例输出显示了针对已加载的广告返回的调试数据:

  ** Response Info **
    Response ID: CLz5r-KMtfoCFQvv7QodfGAMHw
    Network: GADMAdapterGoogleAdMobAds

  ** Loaded Adapter Response **
    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.357

  ** Extras Dictionary **
    {
        "mediation_group_name" = Campaign;
    }

  ** Mediation line items **
    Entry (1)
    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.357

GADResponseInfo 上的属性包括:

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

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

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

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

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

Swift

fileprivate func loadInterstitial() {
  GADInterstitialAd.load(
    withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: request
  ) { (ad, error) in
    let responseInfo = ad?.responseInfo

    let responseIdentifier = responseInfo?.responseIdentifier
    let adNetworkClassName = responseInfo?.adNetworkClassName
    let adNetworkInfoArray = responseInfo?.adNetworkInfoArray
    let loadedAdNetworkResponseInfo = responseInfo?.loadedAdNetworkResponseInfo
    let mediationGroupName = responseInfo?.extrasDictionary["mediation_group_name"]
    let mediationABTestName = responseInfo?.extrasDictionary["mediation_ab_test_name"]
    let mediationABTestVariant = responseInfo?.extrasDictionary["mediation_ab_test_variant"]
  }
}

Objective-C

- (void)loadInterstitial {
  [GADInterstitialAd
   loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
   request:request
   completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    GADResponseInfo *responseInfo = ad.responseInfo;

    NSString *responseIdentifier = responseInfo.responseIdentifier;
    NSString *adNetworkClassName = responseInfo.adNetworkClassName;
    NSArray *adNetworkInfoArray = responseInfo.adNetworkInfoArray;
    GADAdNetworkResponseInfo *loadedAdNetworkResponseInfo = responseInfo.loadedAdNetworkResponseInfo;
    NSString *mediationGroupName = responseInfo.extrasDictionary[@"mediation_group_name"];
    NSString *mediationABTestName = responseInfo.extrasDictionary[@"mediation_ab_test_name"];
    NSString *mediationABTestVariant = responseInfo.extrasDictionary[@"mediation_ab_test_variant"];
  }];
}

适配器响应信息

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

GADAdNetworkResponseInfo 输出示例如下:

    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.277

对于每个广告联盟,GADAdNetworkResponseInfo 都提供了以下属性:

媒体资源 说明
error 与向广告联盟发出的请求相关的错误。如果广告联盟成功加载广告或未尝试加载广告,则返回 nil
adSourceId 与此适配器响应相关联的广告来源 ID。 对于广告系列,系统会针对参与中介的广告广告系列目标类型返回 6060308706800320801,并针对展示次数和点击次数目标类型返回 7068401028668408324。如需查看广告联盟投放广告时可能出现的广告来源 ID 的列表,请参阅广告来源
adSourceInstanceId 与此适配器响应相关联的广告来源实例 ID。
adSourceInstanceName 与此适配器响应相关联的广告来源实例名称。
adSourceName 表示投放展示的特定广告联盟的广告来源。 对于广告系列,系统会针对参与中介的广告广告系列目标类型返回 Mediated House Ads,并针对展示和点击目标类型返回 Reservation Campaign。如需查看广告联盟投放广告时可用的广告来源名称的列表,请参阅广告来源
adNetworkClassName 加载了广告的广告联盟适配器的类名称。
adUnitMapping 通过 AdMob 界面设置的网络配置。
latency 广告联盟加载广告所花的时间。如果广告联盟未尝试加载,则返回 0

Swift

fileprivate func loadInterstitial() {
  GADInterstitialAd.load(
    withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: request
  ) { (ad, error) in
    let responseInfo = ad?.responseInfo
    let loadedAdNetworkResponseInfo = responseInfo?.loadedAdNetworkResponseInfo

    let adNetworkError = loadedAdNetworkResponseInfo?.error
    let adSourceId = loadedAdNetworkResponseInfo?.adSourceID
    let adSourceInstanceId = loadedAdNetworkResponseInfo?.adSourceInstanceID
    let adSourceInstanceName = loadedAdNetworkResponseInfo?.adSourceInstanceName
    let adSourceName = loadedAdNetworkResponseInfo?.adSourceName
    let adNetworkClassName = loadedAdNetworkResponseInfo?.adNetworkClassName
    let adUnitMapping = loadedAdNetworkResponseInfo?.adUnitMapping
    let latency = loadedAdNetworkResponseInfo?.latency
  }
}

Objective-C

- (void)loadInterstitial {
  [GADInterstitialAd
   loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
   request:request
   completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    GADResponseInfo *responseInfo = ad.responseInfo;
    GADAdNetworkResponseInfo *loadedAdNetworkResponseInfo = responseInfo.loadedAdNetworkResponseInfo;

    NSError *adNetworkError = loadedAdNetworkResponseInfo.error;
    NSString *adSourceId = loadedAdNetworkResponseInfo.adSourceID;
    NSString *adSourceInstanceId = loadedAdNetworkResponseInfo.adSourceInstanceID;
    NSString *adSourceInstanceName = loadedAdNetworkResponseInfo.adSourceInstanceName;
    NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
    NSString *adNetworkClassName = loadedAdNetworkResponseInfo.adNetworkClassName;
    NSDictionary *adUnitMapping = loadedAdNetworkResponseInfo.adUnitMapping;
    NSTimeInterval latency = loadedAdNetworkResponseInfo.latency;
  }];
}