擷取廣告回應的相關資訊

為了進行偵錯和記錄,成功載入的廣告會提供 GADResponseInfo 物件。除了用於載入廣告的中介服務刊登序列資訊外,這個物件還包含所載入廣告的相關資訊。

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

如果廣告無法載入,且只有錯誤訊息,您可以使用錯誤訊息 userInfo 字典中的 GADErrorUserInfoKeyResponseInfo 鍵取得 GADResponseInfo

Swift

fileprivate func loadInterstitial() {
  GADInterstitialAd.load(
    withAdUnitID: "/21775744923/example/interstitial", 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:@"/21775744923/example/interstitial"
   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: BmnCZaSbE_6Mur8P5su8gAY
    Network: GADMAdapterGoogleAdMobAds

  ** Loaded Adapter Response **
    Network: GADMAdapterGoogleAdMobAds
    Ad Source Name:AdMob Network
    Ad Source ID:
    Ad Source Instance Name:AdMob (default)
    Ad Source Instance ID:AdMob (default)
    AdUnitMapping:
{
    pubid = "ca-pub-9939518381636264//21775744923/example/rewarded-interstitial/cak=no_cache&cadc=b0&caqid=BmnCZZjMEvzpkPIP5cWfQA";
}
    Error: (null)
    Latency: 2.724

  ** Extras Dictionary **
    {
    }

  ** Mediation line items **
    Entry (1)
    Network: GADMAdapterGoogleAdMobAds
    Ad Source Name:AdMob Network
    Ad Source ID:
    Ad Source Instance Name:AdMob (default)
    Ad Source Instance ID:AdMob (default)
    AdUnitMapping:
{
    pubid = "ca-pub-9939518381636264//21775744923/example/rewarded-interstitial/cak=no_cache&cadc=b0&caqid=BmnCZZjMEvzpkPIP5cWfQA";
}
    Error: (null)
    Latency: 2.724

GADResponseInfo 的屬性包括:

屬性 說明
adNetworkInfoArray 傳回 GADAdNetworkResponseInfo 清單,其中包含廣告回應中每個轉接程式所含的中繼資料。可用於偵錯刊登序列中介服務和出價執行作業。清單中的順序與此廣告請求的中介服務刊登序列一致。

詳情請參閱「轉接器回應資訊」。

loadedAdNetworkResponseInfo 傳回與載入廣告的轉接程式相對應的 GADAdNetworkResponseInfo
adNetworkClassName 傳回載入廣告的廣告聯播網中介服務轉接器類別名稱。
responseIdentifier 回應 ID 是廣告回應的專屬 ID。您可以使用這個 ID 在廣告審核中心 (ARC) 中找出特定廣告並將其封鎖。
extrasDictionary

傳回廣告回應的額外資訊。

Swift

fileprivate func loadInterstitial() {
  GADInterstitialAd.load(
    withAdUnitID: "/21775744923/example/interstitial", 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
  }
}

Objective-C

- (void)loadInterstitial {
  [GADInterstitialAd
   loadWithAdUnitID:@"/21775744923/example/interstitial"
   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;
  }];
}

轉接器回應資訊

GADAdNetworkResponseInfo 包含廣告回應中每個轉接程式中繼資料,可用於對瀑布式中介服務和出價執行作業進行偵錯。清單的順序與廣告請求的中介服務刊登序列順序一致。

以下是 GADAdNetworkResponseInfo 輸出的範例:

    Network: GADMAdapterGoogleAdMobAds
    Ad Source Name:AdMob Network
    Ad Source ID:
    Ad Source Instance Name:AdMob (default)
    Ad Source Instance ID:AdMob (default)
    AdUnitMapping:
{
    pubid = "ca-pub-9939518381636264//21775744923/example/rewarded-interstitial/cak=no_cache&cadc=b0&caqid=BmnCZZjMEvzpkPIP5cWfQA";
}
    Error: (null)
    Latency: 2.724

GADAdNetworkResponseInfo 會針對每個廣告聯播網提供下列屬性:

屬性 說明
error 與網路要求相關的錯誤。如果聯播網成功載入廣告,或未嘗試聯播網,則會傳回 nil
adSourceId 與此轉接程式回應相關聯的廣告來源 ID。
adSourceInstanceId 與此轉接程式回應相關聯的廣告來源例項 ID。
adSourceInstanceName 與此轉接程式回應相關聯的廣告來源例項名稱。如果收益群組未填入,則會傳回空白字串。
adSourceName 代表放送曝光的特定廣告聯播網廣告來源。
adNetworkClassName 載入廣告的廣告聯播網轉接程式類別名稱。
adUnitMapping 透過 Ad Manager 使用者介面設定的聯播網設定。
latency 廣告聯播網載入廣告所需的時間。如果未嘗試網路,則會傳回 0

Swift

fileprivate func loadInterstitial() {
  GADInterstitialAd.load(
    withAdUnitID: "/21775744923/example/interstitial", 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:@"/21775744923/example/interstitial"
   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;
  }];
}