Truy xuất thông tin về nội dung phản hồi quảng cáo

Để gỡ lỗi và ghi nhật ký, quảng cáo đã tải thành công sẽ cung cấp đối tượng GADResponseInfo. Đối tượng này chứa thông tin về quảng cáo đã tải, ngoài thông tin về quy trình dàn xếp kiểu thác nước được dùng để tải quảng cáo đó.

Trong trường hợp quảng cáo tải thành công, đối tượng quảng cáo sẽ có thuộc tính GADResponseInfo. Ví dụ: GADInterstitialAd.responseInfo nhận thông tin phản hồi về quảng cáo xen kẽ đã tải.

Trong trường hợp quảng cáo không tải được và chỉ có một lỗi xuất hiện, bạn có thể sử dụng GADResponseInfo bằng cách sử dụng khoá GADErrorUserInfoKeyResponseInfo trên từ điển userInfo của lỗi.

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);
  }];
}

Thông tin phản hồi

Dưới đây là kết quả mẫu cho thấy dữ liệu gỡ lỗi được trả về cho một quảng cáo đã tải:

  ** 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

Các thuộc tính trên GADResponseInfo bao gồm:

Tài sản Nội dung mô tả
adNetworkInfoArray Trả về danh sách GADAdNetworkResponseInfo chứa siêu dữ liệu cho từng bộ chuyển đổi có trong nội dung phản hồi quảng cáo. Bạn có thể sử dụng để gỡ lỗi cách thực thi quy trình đặt giá thầu và dàn xếp kiểu thác nước. Thứ tự của danh sách này khớp với thứ tự của quy trình dàn xếp kiểu thác nước cho yêu cầu quảng cáo này.

Hãy xem bài viết Thông tin phản hồi của bộ chuyển đổi để biết thêm thông tin.

loadedAdNetworkResponseInfo Trả về GADAdNetworkResponseInfo tương ứng với bộ chuyển đổi đã tải quảng cáo.
adNetworkClassName Trả về tên lớp bộ chuyển đổi dàn xếp của mạng quảng cáo đã tải quảng cáo.
responseIdentifier Giá trị nhận dạng nội dung phản hồi là giá trị nhận dạng duy nhất của nội dung phản hồi quảng cáo. Bạn có thể sử dụng giá trị nhận dạng này để xác định và chặn quảng cáo trong Trung tâm xem xét quảng cáo (ARC).
extrasDictionary

Trả về thông tin bổ sung về nội dung phản hồi quảng cáo. Ứng dụng khác có thể trả về các khoá sau:

  • mediation_group_name: Tên của nhóm dàn xếp
  • mediation_ab_test_name: Tên của thử nghiệm A/B cho nhóm dàn xếp, nếu có
  • mediation_ab_test_variant: Biến thể được dùng trong thử nghiệm A/B cho nhóm dàn xếp (nếu có)

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"];
  }];
}

Thông tin phản hồi của bộ chuyển đổi

GADAdNetworkResponseInfo chứa siêu dữ liệu cho từng bộ chuyển đổi có trong nội dung phản hồi quảng cáo. Bạn có thể dùng siêu dữ liệu này để gỡ lỗi về cách thực thi quy trình đặt giá thầu và dàn xếp kiểu thác nước. Thứ tự của danh sách khớp với thứ tự của quy trình dàn xếp kiểu thác nước cho yêu cầu quảng cáo.

Sau đây là kết quả đầu ra của GADAdNetworkResponseInfo mẫu:

    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

Đối với mỗi mạng quảng cáo, GADAdNetworkResponseInfo sẽ cung cấp các thuộc tính sau:

Tài sản Nội dung mô tả
error Lỗi liên quan đến yêu cầu tới mạng. Trả về nil nếu mạng đã tải quảng cáo thành công hoặc nếu mạng chưa thử tải quảng cáo.
adSourceId Mã nguồn quảng cáo được liên kết với nội dung phản hồi của bộ chuyển đổi này. Đối với chiến dịch, 6060308706800320801 được trả về cho loại mục tiêu chiến dịch của quảng cáo đã dàn xếp và 7068401028668408324 cho loại mục tiêu lượt hiển thị và lượt nhấp. Hãy xem mục Nguồn quảng cáo để biết danh sách mã nguồn quảng cáo có thể có khi một mạng quảng cáo phân phát quảng cáo.
adSourceInstanceId Mã bản sao nguồn quảng cáo được liên kết với nội dung phản hồi của bộ chuyển đổi này.
adSourceInstanceName Tên bản sao nguồn quảng cáo được liên kết với phản hồi của bộ chuyển đổi này.
adSourceName Nguồn quảng cáo đại diện cho mạng quảng cáo cụ thể phân phát lượt hiển thị. Đối với chiến dịch, Mediated House Ads được trả về cho loại mục tiêu chiến dịch của quảng cáo đã dàn xếp và Reservation Campaign được trả về cho loại mục tiêu lượt hiển thị và lượt nhấp. Hãy xem mục Nguồn quảng cáo để biết danh sách tên nguồn quảng cáo có thể có khi một mạng quảng cáo phân phát quảng cáo.
adNetworkClassName Tên lớp của bộ chuyển đổi mạng quảng cáo đã tải quảng cáo.
adUnitMapping Cấu hình mạng được đặt trong giao diện người dùng AdMob .
latency Lượng thời gian mà mạng quảng cáo cần để tải một quảng cáo. Trả về 0 nếu mạng chưa thử tải quảng cáo.

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;
  }];
}