응답 정보
NAM SDK 는 광고 로드 성공 또는 실패 시 디버깅 및 로깅 목적으로 활용할 수 있는 GFPLoadResponseInfo 객체를 제공합니다. 이 객체에는 광고 요청의 고유 식별자(Request ID), 각 구간별 소요 시간, 그리고 미디에이션 워터폴이 어떤 어댑터를 순서대로 시도했는지에 대한 내역이 담겨 있습니다.
응답 정보는 다음 두 가지 경로로 획득할 수 있습니다.
- 로드 성공 시 : 로드된 광고 객체의
responseInfo프로퍼티 - 로드 실패 시 : 각 Delegate 의
didFailWithError:responseInfo:콜백으로 전달되는responseInfo인자
획득 경로
| 광고 형식 | 로드 성공 | 로드 실패 |
|---|---|---|
| 배너 | adLoader:didReceiveBannerAd: → bannerView.responseInfo | adLoader:didFailWithError:responseInfo: |
| 네이티브 | adLoader:didReceiveNativeAd: → nativeAd.responseInfo | adLoader:didFailWithError:responseInfo: |
| 네이티브 심플 | adLoader:didReceiveNativeSimpleAd: → nativeSimpleAd.responseInfo | adLoader:didFailWithError:responseInfo: |
| 전면형 | interstitialAdManager:didLoadAd: → interstitialAd.responseInfo | interstitialAdManager:didFailWithError:responseInfo: |
| 보상형 | rewardedAdManager:didLoadAd: → rewardedAd.responseInfo | rewardedAdManager:didFailWithError:responseInfo: |
응답 정보 확인 예제
GFPAdLoader 사용시
배너와 네이티브 그리고 네이티브 심플 광고의 로드를 지원하는 GFPAdLoader 를 사용하는 경우에는 아래 예시와 같이 광고 응답 정보를 확인할 수 있습니다.
- Swift
- Objective-C
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceiveBannerAd bannerView: GFPBannerView!) {
print("banner ad response info: \(bannerView.responseInfo)")
}
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceiveNativeAd nativeAd: GFPNativeAd!) {
print("native ad response info: \(nativeAd.responseInfo)")
}
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceiveNativeSimpleAd nativeSimpleAd: GFPNativeSimpleAd!) {
print("native simple ad response info: \(nativeSimpleAd.responseInfo)")
}
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didFailWithError error: GFPError!, responseInfo: GFPLoadResponseInfo!) {
print("on error response info: \(String(describing: responseInfo))")
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didReceiveBannerAd:(GFPBannerView *)bannerView {
NSLog(@"banner ad response info: %@", bannerView.responseInfo);
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didReceiveNativeAd:(GFPNativeAd *)nativeAd {
NSLog(@"native ad response info: %@", nativeAd.responseInfo);
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didReceiveNativeSimpleAd:(GFPNativeSimpleAd *)nativeSimpleAd {
NSLog(@"native simple ad response info: %@", nativeSimpleAd.responseInfo);
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didFailWithError:(GFPError *)error responseInfo:(GFPLoadResponseInfo *)responseInfo {
NSLog(@"on error response info: %@", responseInfo);
}
GFPInterstitialAdManager 사용시
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didLoadAd interstitialAd: GFPInterstitialAd) {
print("response info: \(interstitialAd.responseInfo)")
}
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didFailWithError error: GFPError, responseInfo: GFPLoadResponseInfo!) {
print("response info: \(String(describing: responseInfo))")
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didLoadAd:(nonnull GFPInterstitialAd *)interstitialAd {
NSLog(@"response info: %@", interstitialAd.responseInfo);
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didFailWithError:(nonnull GFPError *)error responseInfo:(nullable GFPLoadResponseInfo *)responseInfo {
NSLog(@"response info: %@", responseInfo);
}
GFPRewardedAdManager 사용시
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didLoadAd rewardedAd: GFPRewardedAd) {
print("response info: \(rewardedAd.responseInfo)")
}
func rewardedAdManager(_ manager: GFPRewardedAdManager, didFailWithError error: GFPError, responseInfo: GFPLoadResponseInfo!) {
print("response info: \(String(describing: responseInfo))")
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didLoadAd:(nonnull GFPRewardedAd *)rewardedAd {
NSLog(@"response info: %@", rewardedAd.responseInfo);
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didFailWithError:(nonnull GFPError *)error responseInfo:(nullable GFPLoadResponseInfo *)responseInfo {
NSLog(@"response info: %@", responseInfo);
}
로그 출력 예시
GFPLoadResponseInfo 를 그대로 로그로 출력하면 미디에이션 워터폴의 진행 내역까지 한 번에 확인할 수 있습니다.
[GFPLoadResponseInfo] requestID: 0f0f1d3c-..., adCallLatency: 0.083, adaptorLoadLatency: 0.402, totalLoadLatency: 0.485, adaptorResponses: (
"[GFPAdaptorResponseInfo] adaptorName: GFPSDKMediationDFP.GFPDFPBannerAdaptor, loadErrorLatency: 0.156, errorMessage: no ad to show",
"[GFPAdaptorResponseInfo] adaptorName: GFPNDABannerAdaptor, loadLatency: 0.246"
)
위 예시는 첫 번째 어댑터가 실패한 뒤 두 번째 어댑터에서 광고가 선출되었음을 의미합니다.
응답 정보
GFPLoadResponseInfo 객체의 프로퍼티에는 다음이 포함됩니다.
| 프로퍼티 | 타입 | 설명 |
|---|---|---|
| requestID | NSString | 광고 요청에 대한 고유 식별자입니다. 특정 광고 요청에 문제가 발생했을 때 원인을 파악하는 데 유용한 키 값이 될 수 있습니다. |
| adCallLatency | NSNumber | 광고 서버에 요청을 보내고 응답을 받는 데 걸린 시간(초)입니다. 광고를 요청하지 않았거나 응답을 받지 못한 경우에는 0이 반환됩니다. |
| adaptorLoadLatency | NSNumber | 미디에이션 선출 과정이 시작된 시점부터 종료될 때까지 걸린 시간(초)입니다. 실패한 어댑터의 시도 시간도 포함됩니다. 광고 서버 응답을 받지 못해 미디에이션이 진행되지 않은 경우 0이 반환됩니다. |
| totalLoadLatency | NSNumber | 광고 서버에 요청을 보낸 시점부터 미디에이션 선출 과정이 종료될 때까지 걸린 전체 시간(초)입니다. 광고 서버 응답을 받지 못한 경우 0이 반환됩니다. |
| adContext | NSString? | 선출된 광고의 광고 컨텍스트 문자열입니다. 광고 응답에 포함되지 않은 경우 nil 이 반환됩니다. |
| crid | NSString? | 선출된 광고 소재의 Creative ID 입니다. 광고를 로드하는 데 성공한 광고가 없을 경우 nil 이 반환됩니다. |
| loadResponseList | [GFPInternalResponseInfo] | 이 광고 요청에서 시도된 각 미디에이션 어댑터의 응답 정보 목록입니다. Waterfall 미디에이션 과정을 디버깅하는 데 사용될 수 있으며, 목록의 순서는 이 광고 요청의 미디에이션 호출 순서와 일치합니다. |
어댑터 응답 정보
GFPInternalResponseInfo 는 미디에이션 과정 중에 처리되는 개별 미디에이션 어댑터에 대한 응답 정보를 포함하고, 이 객체의 프로퍼티에는 다음이 포함됩니다.
| 프로퍼티 | 타입 | 설명 |
|---|---|---|
| adaptorName | NSString | 광고 네트워크를 식별하는 미디에이션 어댑터의 클래스 이름입니다. 어댑터 생성 전에 실패한 경우에는 값이 채워지지 않습니다. |
| loadLatency | NSNumber | 어댑터 내부에서 광고를 요청하고 로드하는 데 걸린 시간(초)입니다. 어댑터 내부에서 광고를 요청하지 않았거나 광고 요청이 실패했을 경우 0이 반환됩니다. |
| loadErrorLatency | NSNumber | 어댑터 내부에서 광고를 요청하고 오류가 발생하는 시점까지 걸린 시간(초)입니다. 어댑터 내부에서 광고를 요청하지 않았거나 광고 요청이 성공했을 경우 0이 반환됩니다. |
| errorMesage | NSString | 어댑터 내부에서 발생한 오류 메시지입니다. 광고 응답이 비어 있는 경우에는 EMPTY 가 기록되며, 광고 요청이 성공했을 경우에는 값이 채워지지 않습니다. |
| errorCode | NSNumber? | 어댑터 내부에서 발생한 오류의 코드입니다. 오류 코드가 전달되지 않았거나 광고 요청이 성공했을 경우 nil 이 반환됩니다. 코드별 상세 내용은 광고 오류 문서를 참고하세요. |
| errorSubcode | NSString? | 어댑터 내부에서 발생한 오류의 서브 코드입니다. 서브 코드가 전달되지 않았거나 광고 요청이 성공했을 경우 nil 이 반환됩니다. |