擷取廣告回應的相關資訊

選取平台: 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) 辨識並封鎖該廣告。
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 清單,請參閱「廣告來源」。
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;
  }];
}