擷取廣告回應的相關資訊

為了偵錯與記錄,成功載入的廣告會提供 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 回應 ID 是廣告回應的專屬 ID。您可以運用這個 ID 在廣告審核中心 (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 UI 設定的網路設定。
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;
  }];
}