擷取廣告回應的相關資訊

選取平台: Android iOS Unity Flutter

基於偵錯和記錄目的,成功載入的廣告會提供 GADResponseInfo 物件。這個物件包含所載入廣告的相關資訊,以及用於載入廣告的中介服務刊登序列資訊。

如果廣告成功載入,廣告物件會有 GADResponseInfo 屬性。舉例來說,GADInterstitialAd.responseInfo 會取得已載入插頁式廣告的回應資訊。

如果廣告載入失敗,因而只能提供錯誤資訊,可在錯誤物件的 userInfo 字典中,使用 GADErrorUserInfoKeyResponseInfo 鍵取得 GADResponseInfo

Swift

fileprivate func loadInterstitial() {
  InterstitialAd.load(
    with: "ca-app-pub-3940256099942544/4411468910", request: request
  ) { (ad, error) in
    if let error = error {
      let responseInfo = (error as NSError).userInfo[GADErrorUserInfoKeyResponseInfo] as? ResponseInfo
      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。您可在廣告審核中心 (ARC) 輸入這個 ID,找出並封鎖特定廣告。
extrasDictionary 傳回與廣告回應有關的額外資訊,可能傳回的鍵值如下:
  • mediation_group_name:中介服務群組的名稱
  • mediation_ab_test_name中介服務 A/B 測試的名稱 (如適用)
  • mediation_ab_test_variant:在中介服務 A/B 測試中使用的變化版本 (如適用)

Swift

fileprivate func loadInterstitial() {
  InterstitialAd.load(
    with: "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 清單,瞭解放送廣告的廣告聯播網可能使用哪些 ID,請參閱「廣告來源」。
adSourceInstanceId 與這個轉接程式回應相關聯的廣告來源例項 ID。
adSourceInstanceName 與這個轉接程式回應相關聯的廣告來源例項名稱。
adSourceName 這個屬性傳回的廣告來源代表放送曝光的廣告聯播網。如果是廣告活動,中介服務廣告的廣告活動目標類型會傳回 Mediated House Ads,曝光和點擊目標類型則會傳回 Reservation Campaign。請參閱「廣告來源」中的廣告來源名稱清單,瞭解廣告聯播網放送廣告時可能使用哪些名稱。
adNetworkClassName 載入廣告的廣告聯播網轉接程式的類別名稱。
adUnitMapping 透過 AdMob 使用者介面設置的聯播網設定。
latency 廣告聯播網載入廣告所花費的時間。若未對廣告聯播網發出請求,則傳回 0

Swift

fileprivate func loadInterstitial() {
  InterstitialAd.load(
    with: "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;
  }];
}