擷取廣告回應的相關資訊

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

如果廣告載入成功,廣告物件會提供 getResponseInfo() 方法。舉例來說, InterstitialAd.getResponseInfo() 會取得已載入插頁式廣告的回應資訊。

如果廣告無法載入,且只有錯誤訊息,則可透過 LoadAdError.getResponseInfo() 取得回應資訊。

Kotlin

override fun onAdLoaded(interstitialAd: InterstitialAd)) {
  val responseInfo = interstitialAd.responseInfo
  Log.d(TAG, responseInfo.toString())
}

override fun onAdFailedToLoad(adError: LoadAdError) {
  val responseInfo = adError.responseInfo
  Log.d(TAG, responseInfo.toString())
}

Java

@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
  ResponseInfo responseInfo = interstitialAd.getResponseInfo();
  Log.d(TAG, responseInfo.toString());
}

@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
  ResponseInfo responseInfo = loadAdError.getResponseInfo();
  Log.d(TAG, responseInfo.toString());
}

回覆資訊

以下是 ResponseInfo.toString() 傳回的範例輸出內容,顯示載入廣告傳回的偵錯資料:

{
  "Response ID": "COOllLGxlPoCFdAx4Aod-Q4A0g",
  "Mediation Adapter Class Name": "com.google.ads.mediation.admob.AdMobAdapter",
  "Adapter Responses": [
    {
      "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
      "Latency": 328,
      "Ad Source Name": "Reservation campaign",
      "Ad Source ID": "7068401028668408324",
      "Ad Source Instance Name": "[DO NOT EDIT] Publisher Test Interstitial",
      "Ad Source Instance ID": "4665218928925097",
      "Credentials": {},
      "Ad Error": "null"
    }
  ],
  "Loaded Adapter Response": {
    "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
    "Latency": 328,
    "Ad Source Name": "Reservation campaign",
    "Ad Source ID": "7068401028668408324",
    "Ad Source Instance Name": "[DO NOT EDIT] Publisher Test Interstitial",
    "Ad Source Instance ID": "4665218928925097",
    "Credentials": {},
    "Ad Error": "null"
  },
  "Response Extras": {
    "mediation_group_name": "Campaign"
  }
}

ResponseInfo 物件的方法包括:

方法 說明
getAdapterResponses 傳回 AdapterResponseInfo 清單,其中包含廣告回應中每個介面的中繼資料。可用於偵錯刊登序列中介服務和出價執行作業。清單中的順序與這項廣告請求的中介服務刊登序列順序一致。

詳情請參閱「介面卡回應資訊」。

getLoadedAdapterResponseInfo 傳回載入廣告的轉接程式對應 AdapterResponseInfo
getMediationAdapterClassName 傳回載入廣告的廣告來源中介服務介面卡類別名稱。
getResponseId 回應 ID 是廣告回應的專屬 ID。您可利用這個 ID 在廣告審核中心 (ARC) 找出特定廣告並將其封鎖。
getResponseExtras 傳回廣告回應的額外資訊。額外項目可能會傳回下列鍵值:
  • mediation_group_name:中介服務群組的名稱
  • mediation_ab_test_name中介服務 A/B 測試的名稱 (如適用)
  • mediation_ab_test_variant:中介服務 A/B 測試中使用的變化版本 (如適用)

Kotlin

override fun onAdLoaded(interstitialAd: InterstitialAd)) {
  val responseInfo = interstitialAd.responseInfo

  val responseId = responseInfo.responseId
  val mediationAdapterClassName = responseInfo.mediationAdapterClassName
  val adapterResponses = responseInfo.adapterResponses
  val loadedAdapterResponseInfo = responseInfo.loadedAdapterResponseInfo
  val extras = responseInfo.responseExtras
  val mediationGroupName = extras.getString("mediation_group_name")
  val mediationABTestName = extras.getString("mediation_ab_test_name")
  val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
}

Java

@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
  MyActivity.this.interstitialAd = interstitialAd;

  ResponseInfo responseInfo = interstitialAd.getResponseInfo();
  String responseId = responseInfo.getResponseId();
  String mediationAdapterClassName = responseInfo.getMediationAdapterClassName();
  List<AdapterResponseInfo> adapterResponses = responseInfo.getAdapterResponses();
  AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.getLoadedAdapterResponseInfo();
  Bundle extras = responseInfo.getResponseExtras();
  String mediationGroupName = extras.getString("mediation_group_name");
  String mediationABTestName = extras.getString("mediation_ab_test_name");
  String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
}

轉接程式回應資訊

AdapterResponseInfo 包含廣告回應中個別廣告來源的回應資訊。

下列 AdapterResponseInfo 輸出範例顯示已載入廣告的相關中繼資料:

{
  "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
  "Latency": 328,
  "Ad Source Name": "Reservation campaign",
  "Ad Source ID": "7068401028668408324",
  "Ad Source Instance Name": "[DO NOT EDIT] Publisher Test Interstitial",
  "Ad Source Instance ID": "4665218928925097",
  "Credentials": {},
  "Ad Error": "null"
}

針對每個廣告來源,AdapterResponseInfo 提供下列方法:

方法 說明
getAdError 取得與廣告來源要求相關聯的錯誤。如果廣告來源成功載入廣告,或未嘗試載入廣告,則傳回 null
getAdSourceId 取得與這個轉接程式回應相關聯的廣告來源 ID。 如果是廣告活動,中介服務廣告廣告活動目標類型會傳回 6060308706800320801,曝光和點擊目標類型則會傳回 7068401028668408324。如要查看廣告來源放送廣告時可能出現的廣告來源 ID 清單,請參閱「廣告來源」一文。
getAdSourceInstanceId 取得與這個介面卡回應相關聯的廣告來源執行個體 ID。
getAdSourceInstanceName 取得與這個介面卡回應相關聯的廣告來源例項名稱。
getAdSourceName 取得與這個介面卡回應相關聯的廣告來源名稱。 如果是廣告活動,中介服務廣告廣告活動目標類型會傳回 Mediated House Ads,曝光和點擊目標類型則會傳回 Reservation Campaign。如要查看廣告來源放送廣告時可能出現的廣告來源名稱清單,請參閱「廣告來源」一文。
getAdapterClassName 取得載入廣告的廣告來源介面卡類別名稱。
getCredentials 取得 AdMob 使用者介面中指定的廣告來源轉接程式憑證。
getLatencyMillis 取得廣告來源介面卡載入廣告所花費的時間量。 如果系統未嘗試使用廣告來源,則會傳回 0

Kotlin

override fun onAdLoaded(interstitialAd: InterstitialAds) {
  val loadedAdapterResponseInfo = interstitialAd.responseInfo.loadedAdapterResponseInfo

  val adError = loadedAdapterResponseInfo.adError
  val adSourceId = loadedAdapterResponseInfo.adSourceId
  val adSourceInstanceId = loadedAdapterResponseInfo.adSourceInstanceId
  val adSourceInstanceName = loadedAdapterResponseInfo.adSourceInstanceName
  val adSourceName = loadedAdapterResponseInfo.adSourceName
  val adapterClassName = loadedAdapterResponseInfo.adapterClassName
  val credentials = loadedAdapterResponseInfo.credentials
  val latencyMillis = loadedAdapterResponseInfo.latencyMillis
}

Java

@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
  AdapterResponseInfo loadedAdapterResponseInfo =
      interstitialAd.getResponseInfo().getLoadedAdapterResponseInfo();

  AdError adError = loadedAdapterResponseInfo.getAdError();
  String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
  String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();
  String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
  String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
  String adapterClassName = loadedAdapterResponseInfo.getAdapterClassName();
  Bundle credentials = loadedAdapterResponseInfo.getCredentials();
  long latencyMillis = loadedAdapterResponseInfo.getLatencyMillis();
}