본문으로 건너뛰기

네이티브 심플 광고 옵션

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

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

self.adLoader?.requestTimeoutInterval = ...

GFPNativeSimpleAdRenderingSetting​

정보

이 섹션에서는 자주 사용되는 주요 옵션만 다룹니다. GFPNativeSimpleAdRenderingSetting이 제공하는 모든 옵션의 전체 목록은 네이티브 렌더링 옵션을 참고해 주세요.

AdBadge 렌더링 옵션​

Native Simple 광고의 'AD' badge 표시 유무에 관련한 옵션입니다. YES로 설정 시 이미지의 우하단에 위치하며, NO로 설정 시 표시되지 않습니다.

위험

AdBadge 렌더링 옵션은 NAMSDK 4.3.0 부터 deprecate 되었습니다. AD마크는 내부 로직에 의해 렌더링됩니다.

let simpleRenderingSetting = GFPNativeSimpleAdRenderingSetting()
simpleRenderingSetting.renderAdBadge = true

let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.simpleAdRenderingSetting = simpleRenderingSetting

AdMute 위치 및 터치 영역 옵션​

Native Simple 광고의 Ad Choice의 영역 및 터치 영역에 관련한 옵션입니다. YES로 설정 시 Ad Choice의 위치 기준이 전체 뷰로 확대되며 터치 영역 또한 전체 뷰로 확대됩니다. 기본값은 NO입니다.

let simpleRenderingSetting = GFPNativeSimpleAdRenderingSetting()
simpleRenderingSetting.adChoicesPositionInFullAdView = true

let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.simpleAdRenderingSetting = simpleRenderingSetting

스타일 설정​

InterfaceStyle 전역 설정과 별개로, 특정 화면에서 UI 모드가 다를 때 개별 설정을 통해 아이콘 스타일을 맞출 수 있습니다. '광고 별 설정 > 전역 설정'의 우선 순위에 따라 적용되며, 광고 별 style 설정이 없을 경우 전역 설정을 따라갑니다.

let simpleRenderingSetting = GFPNativeSimpleAdRenderingSetting()
simpleRenderingSetting.adInterfaceStyle = .light
simpleRenderingSetting.adInterfaceStyle = .dark
simpleRenderingSetting.adInterfaceStyle = .system // 아이폰 설정의 style을 따라갑니다.

let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.simpleAdRenderingSetting = simpleRenderingSetting

NS 커스텀 배경 설정​

NS 광고 배경 스타일 설정

일반적으로 광고 디자인이 정해져 있는 Native Simple 광고에서 배경 정보가 없는 경우 커스텀 배경 스타일을 설정할 수 있는 옵션입니다.

let light = GFPBackgroundOptionAttributes()
light.color = UIColor(red: 237/255.0, green: 240/255.0, blue: 244/255.0, alpha: 1.0)
light.alpha = 0.74
light.cornerRadius = 8
light.leftMargin = 8
light.rightMargin = 8
light.bottomMargin = 0
light.topMargin = 0
light.maxWidth = 414
let dark = GFPBackgroundOptionAttributes()
dark.color = UIColor(red: 237/255.0, green: 240/255.0, blue: 244/255.0, alpha: 1.0)
dark.alpha = 0.74
dark.cornerRadius = 8
dark.leftMargin = 8
dark.rightMargin = 8
dark.bottomMargin = 0
dark.topMargin = 0
dark.maxWidth = 414
let bgOption = GFPBackgroundOption(light: light, dark: dark)
let renderingSetting = GFPNativeSimpleAdRenderingSetting()
renderingSetting.backgroundOption = bgOption
let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.simpleAdRenderingSetting = renderingSetting
let adLoader = GFPAdLoader()
adLoader.setNativeSimpleDelegate(self, nativeSimpleOptions: nativeSimpleOption)

네이티브 심플 광고 Lazy Loading​

Lazy Loading 활성화​

네이티브 심플 렌더링 옵션에서 useLazyMediaLoading 을 활성화하면 광고 로드 콜백은 먼저 호출되고, 미디어 뷰의 이미지 리소스는 이후 비동기로 로딩됩니다.

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

let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.renderingSetting.useLazyMediaLoading = true
self.adLoader?.setNativeSimpleDelegate(self, nativeSimpleOptions: nativeSimpleOption)

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

플레이스홀더 표시​

플레이스홀더는 nativeSimpleAdView.nativeAd = nativeSimpleAd 를 설정한 이후에 표시해야 합니다. 이 시점 이후에는 미디어 뷰의 크기와 위치가 결정되어 플레이스홀더가 뷰 영역에 맞게 표시됩니다.

func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceive nativeSimpleAd: GFPNativeSimpleAd!) {
nativeSimpleAd.delegate = self
nativeSimpleAdView.nativeAd = nativeSimpleAd

if nativeSimpleAd.mediaLoadingState == .loading {
nativeSimpleAdView.mediaView?.showPlaceholder { imageView in
imageView.image = UIImage(named: "my_media_placeholder")
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}
}
}

플레이스홀더 제거​

Lazy Loading 으로 로딩된 미디어가 성공적으로 로딩되면 SDK가 플레이스홀더를 자동으로 제거합니다. 따라서 일반적인 경우 앱에서 removePlaceholders() 를 직접 호출하지 않아도 됩니다.

미디어 로딩이 실패한 경우 SDK는 플레이스홀더를 자동으로 제거하지 않습니다. 실패 상태의 플레이스홀더를 보여주려면 nativeSimpleAdDidFail(toLoadMedia:) 또는 nativeSimpleAdDidFailToLoadMedia: 에서 새 플레이스홀더를 설정하거나, 필요에 따라 removePlaceholders() 를 직접 호출합니다.

플레이스홀더가 제거되기 전에 페이드 아웃 같은 커스텀 효과를 적용하려면 placeholderWillRemoveHandler 를 설정합니다. 커스텀 효과가 끝난 뒤 반드시 removeHandler 를 호출해야 실제 플레이스홀더가 제거됩니다.

테이블/컬렉션 셀을 재사용하는 경우에는 이전 광고의 플레이스홀더가 남지 않도록 prepareForReuse 등 reset 시점에 removePlaceholders() 호출을 권장합니다.

비동기 미디어 로딩 콜백​

미디어 뷰의 비동기 로딩이 성공적으로 완료되면 GFPNativeSimpleAdDelegate 의 nativeSimpleAdDidLoadMedia(_:) 가 호출됩니다.

로딩이 실패하면 nativeSimpleAdDidFail(toLoadMedia:) 가 호출됩니다. 실패 시 기존 플레이스홀더는 자동 삭제되지 않으므로, 실패 상태에 맞는 플레이스홀더를 다시 설정하거나 직접 제거해 주세요.

미디어 asset 의 로딩 상태 변화는 nativeSimpleAd(_:didChangeMediaAssetLoadingState:assetType:) 콜백 또는 mediaLoadingState 프로퍼티로도 확인할 수 있습니다.

// GFPNativeSimpleAdDelegate
func nativeSimpleAdDidLoadMedia(_ nativeSimpleAd: GFPNativeSimpleAd) {
// SDK가 placeholder를 자동 제거합니다.
}

func nativeSimpleAdDidFail(toLoadMedia nativeSimpleAd: GFPNativeSimpleAd) {
if nativeSimpleAd.mediaLoadingState == .failed {
nativeSimpleAdView.mediaView?.showPlaceholder { imageView in
imageView.image = UIImage(named: "my_fallback_media_placeholder")
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}
}
}

func nativeSimpleAd(_ nativeSimpleAd: GFPNativeSimpleAd,
didChangeMediaAssetLoadingState state: GFPNativeAdMediaLoadingState,
assetType: GFPNativeAdMediaAssetType) {
if assetType == .media, state == .failed {
// 미디어 로딩 실패 처리
}
}