본문으로 건너뛰기

네이티브 광고 옵션

광고 요청 타임아웃 (기본값 60초)

광고요청 이후 지정한 시간(초)경과 까지 광고 응답을 얻지 못하면 기존 요청이 무효화되며, GFPAdLoaderDelegate의 adLoader:didFailWithError:responseInfo: 메소드가 호출됩니다.

self.adLoader?.requestTimeoutInterval = ...

GFPNativeAdRenderingSetting

DFP adChoicesView 위치 설정 옵션

DFP의 adChoiceView는 오버레이 형식으로 렌더링 됩니다. 따라서, adChoicesView가 자동으로 삽입될 네 귀퉁이중 한군데를 비워놓아야 합니다. DFP의 adChoicesView의 기본 위치는 오른쪽 상단 코너이며,
GFPNativeAdRenderingSetting의 preferredAdChoicesViewPosition 을 통해 설정 가능합니다.

let renderingSetting = GFPNativeAdRenderingSetting()
renderingSetting.preferredAdChoicesViewPosition = .topRightCorner

let nativeOption = GFPAdNativeOptions()
nativeOption.renderingSetting = renderingSetting
정보

구글 문서에는 adChoiceView를 직접 등록하면 오버레이형식이 아닌 직접 등록한 뷰에 그려진다고 되어있으나, 아직까지 정상 동작 하지 않으므로 우상단이 아닌 위치에 adChoiceView가 렌더링 되기를 원하시는 경우 이 세팅이 필요합니다.

미디어뷰가 없는 네이티브 광고 사용시

미디어뷰가 없는 네이티브 광고(예를들어 아이콘과 타이틀 클릭 버튼만으로 구성된 네이티브 광고)를 사용하려면, GFPNativeAdRenderingSetting 의 hasMediaView = NO를 설정해야 합니다. (기본값은 YES)

위험

네이티브 뷰에 미디어 뷰 존재여부와 GFPNativeAdRenderingSetting.hasMediaView 상태가 다르면, 네이티브 광고 렌더링 시점에 오류가 발생합니다.

let setting = GFPNativeAdRenderingSetting()
setting.hasMediaView = false

let nativeOption = GFPAdNativeOptions()
nativeOption.renderingSetting = setting

네이티브 광고 Lazy Loading

Lazy Loading 활성화

네이티브 렌더링 옵션에서 lazy loading 을 활성화 시키면 네이티브 광고 뷰 객체와 텍스트 에셋이 먼저 GFPAdLoaderDelegate.adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceive nativeAd: GFPNativeAd!) 으로 주어지며, 미디어 뷰, 아이콘 뷰 등은 비동기로 로딩 됩니다.

self.adLoader = GFPAdLoader(unitID: "UnitId", rootViewController: self, adParam: adParam)

let nativeOption = GFPAdNativeOptions()
nativeOptions.renderingSetting.useLazyMediaLoading = true
self.adLoader?.setNativeDelegate(self, nativeOptions: nativeOption)

self.adLoader?.delegate = self
self.adLoader?.loadAd()

플레이스홀더 표시

미디어가 비동기로 로딩 되는 동안 플레이스 홀더를 보여줄 수 있습니다. 플레이스홀더는 광고 뷰 위에 바로 나타나며, 뷰 요소에 크기가 맞도록 자동 조절됩니다.

func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceive nativeAd: GFPNativeAd!) {
self.nativeAdView.nativeAd = nativeAd

self.nativeAdView.mediaView?.showPlaceholder { imageView in
imageView.image = UIImage(named: "my_media_placeholder")
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}

self.nativeAdView.showIconPlaceholder { imageView in
imageView.image = UIImage(named: "my_icon_placeholder")
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}

비동기 미디어 로딩 콜백

미디어 뷰, 아이콘 뷰 등 모든 미디어의 비동기 로딩이 완료되면 GFPNativeAdDelegatenativeAdDidLoadMediaData(_:) 가 호출됩니다.

하나라도 로딩이 실패하는 경우 nativeAdDidFail(toLoadMediaData:) 가 호출됩니다.

// GFPNativeAdDelegate
func nativeAdDidLoadMediaData(_ nativeAd: GFPNativeAd) {
self.nativeAdView.removePlaceholders() // Optional for safety.
}

func nativeAdDidFail(toLoadMediaData nativeAd: GFPNativeAd) {
// Example showing new placeholders on failure.
self.nativeAdView.mediaView?.showPlaceholder { imageView in
imageView.image = UIImage(named: "my_fallback_media_placeholder")
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}

self.nativeAdView.showIconPlaceholder { imageView in
imageView.image = UIImage(named: "my_fallback_icon_placeholder")
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}
}

GFPContentInfo

NativeNormal 타입 광고를 Communication Ad 으로 적용할 경우, ContentInfo 를 주입해야합니다.

let adParam = GFPAdParam()
adParam.contentInfo = GFPContentInfo(
sourceType:0001,
subtype: “menu”,
sourceId:30907206:7)