네이티브 광고
네이티브 광고는 앱 측에서 레이아웃을 정의할 수 있는 광고 유형입니다. 이 기능을 통해 앱 디자인의 특성을 고려하여 광고의 시각적 스타일과 배치를 변경할 수 있습니다.
네이티브 광고는 광고 경험을 향상합니다. 그 결과 사용자 관심을 잃지 않으면서 광고를 더 많이 표시할 수 있습니다. 그러면 장기적으로 광고를 통한 최대 수익이 보장됩니다.
광고 렌더링은 광고 성능과 폼질을 높이는 네이티브 플랫폼 도구로 수행됩니다.
표시 예

이 가이드는 iOS 앱에 네이티브 광고를 통합하는 방법을 보여줍니다. 코드 예시와 지침 외에도 형식별 권장 사항 및 추가 리소스에 대한 링크가 포함되어 있습니다.
사전 준비
- 빠른 시작에 설명된 SDK 통합 단계를 수행하세요.
- 광고 SDK를 미리 초기화하세요.
- 최신 Yandex Mobile Ads SDK 버전을 사용하고 있는지 확인하세요. 중재를 사용하는 경우, 최신 통합 빌드 버전을 실행하고 있는지도 확인하세요.
실행
네이티브 광고 통합을 위한 주요 단계:
NativeAdLoader
를 생성 및 구성합니다.- 로더에 대한 대리자를 설정하고 필요한 대리자 메서드를 구현합니다.
- 광고를 로드합니다.
- Adfox를 사용하는 경우 추가 설정을 전달합니다.
- 로드된 광고를 표시합니다.
네이티브 광고 통합의 특징
-
Yandex Mobile Ads SDK 메서드에 대한 모든 호출은 메인 스레드에서 이루어져야 합니다.
-
func nativeAdLoader(_ loader: NativeAdLoader, didFailLoadingWithError error: Error)
메서드에서 오류를 수신할 때 새로운 광고를 로드하려고 시도하지 않는 것을 적극 권장합니다.func nativeAdLoader(_ loader: NativeAdLoader, didFailLoadingWithError error: Error)
에서 광고를 로드해야 하는 경우, 네트워크 연결 제약으로 인해 반복적으로 광고 요청이 실패하지 않도록 광고 로드 재시도를 제한하세요. -
광고와 그 로더에 대한 강한 참조를 광고와 상호작용하는 화면의 수명 주기 동안 유지하는 것이 좋습니다.
-
광고 콘텐츠를 기반으로 광고 컨테이너의 크기를 계산하는 것을 권장합니다.
광고가 로드되면 모든 자산을 렌더링해야 합니다. 광고에서 사용할 수 있는 구성 요소 목록을
NativeAd
광고 객체에서 가져올 수 있습니다. -
동영상이 포함된 광고는 일반적으로 CTR이 높아 광고 수익이 증가합니다. 동영상 광고를 표시하려면 광고 컨테이너와 MediaView 구성 요소의 크기가 최소 300x160dp(밀도 독립 화소)여야 합니다.
-
가능한 자산의 전체 세트를 포함하는 레이아웃을 사용하는 것을 권장합니다. Yandex의 경험에 따르면, 전체 자산 세트를 포함하는 레이아웃의 전환이 더 효과적입니다.
광고 로드
네이티브 광고를 로드하려면 NativeAdLoader
객체를 생성하세요.
광고 요청 매개변수는 NativeAdRequestConfiguration
클래스 객체를 사용해 구성됩니다. 요청 매개변수로 광고 단위 ID를 전달해야 합니다. 이미지 로딩 방법, 나이, 성별 및 광고 선택 품질을 향상할 수 있는 기타 데이터를 구성할 수도 있습니다. 광고 타겟팅 섹션에서 자세한 내용을 확인하세요.
광고 로딩 결과에 대한 알림을 받으려면 NativeAdLoaderDelegate
프로토콜을 구현하고 이전에 생성된 NativeAdLoader
의 대리자로 설정합니다.
광고를 로드하려면 loadAd(with: NativeAdRequestConfiguration)
메서드를 호출합니다.
다음 예시는 View Controller에서 네이티브 광고를 로드하는 방법을 보여줍니다.
final class CustomNativeViewController: UIViewController {
private var adLoader: NativeAdLoader?
override func viewDidLoad() {
adLoader = NativeAdLoader()
adLoader?.delegate = self
}
private func loadNativeAd() {
let requestConfiguration = NativeAdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
adLoader?.loadAd(with: requestConfiguration)
}
}
extension CustomNativeViewController: NativeAdLoaderDelegate {
func nativeAdLoader(_ loader: NativeAdLoader, didLoad ad: NativeAd) {
// 네이티브 광고가 로드되었음을 알립니다
}
func nativeAdLoader(_ loader: NativeAdLoader, didFailLoadingWithError error: Error) {
// 광고 로드에 실패했음을 알립니다
}
}
광고 렌더링
광고가 로드되면 모든 자산을 렌더링해야 합니다. 광고에서 사용할 수 있는 구성 요소 목록을 NativeAd
광고 객체에서 가져올 수 있습니다.
광고 레이아웃을 구성하는 방법은 두 가지입니다.
- 템플릿을 사용한 레이아웃.
- 네이티브 광고 레이아웃 수동 설정.
템플릿을 사용한 레이아웃
네이티브 광고를 다루는 가장 쉬운 방법은 레이아웃을 위한 표준 템플릿을 사용하는 것입니다. 기본 버전에서는 몇 줄의 코드만 필요합니다.
템플릿에는 이미 필요한 자산의 전체 세트가 포함되어 있으며, 이들의 상호 배치를 정의합니다. 템플릿은 지원되는 모든 유형의 네이티브 광고와 함께 작동합니다.
final class NativeTemplateViewController: UIViewController, NativeAdDelegate {
private let adView = NativeBannerView()
// ...
private lazy var adLoader: NativeAdLoader = {
let adLoader = NativeAdLoader()
adLoader.delegate = self
return adLoader
}()
override func viewDidLoad() {
setupUI()
loadNativeAd()
}
private func loadNativeAd() {
let requestConfiguration = NativeAdRequestConfiguration(adUnitID: "demo-native-content-yandex")
adLoader.loadAd(with: requestConfiguration)
}
private func bindNativeAd(_ ad: NativeAd) {
ad.delegate = self
adView.ad = ad
}
private func setupUI() {
// ...
}
}
extension NativeTemplateViewController: NativeAdLoaderDelegate {
func nativeAdLoader(_ loader: NativeAdLoader, didLoad ad: NativeAd) {
bindNativeAd(ad)
}
func nativeAdLoader(_ loader: NativeAdLoader, didFailLoadingWithError error: Error) {
// ...
}
}
네이티브 광고 템플릿을 사용자 정의할 수 있습니다. 템플릿을 사용한 레이아웃 설정에서 이에 대한 자세한 내용을 확인할 수 있습니다.
네이티브 광고 레이아웃 수동 설정
템플릿 설정만으로 원하는 효과를 얻을 수 없는 경우, 네이티브 광고를 수동으로 구성할 수 있습니다.
이 방법을 통해 네이티브 광고 레이아웃을 수동으로 생성하여 광고 자산의 상호 배치를 정의할 수 있습니다. 광고에는 필수 및 선택적 표시 자산이 모두 포함될 수 있습니다. 전체 목록은 네이티브 광고 자산에서 찾을 수 있습니다.
Совет
가능한 자산의 전체 세트를 포함하는 레이아웃을 사용하는 것을 권장합니다. 실제로 이러한 레이아웃은 전환율에 긍정적인 영향을 미칩니다.
네이티브 광고의 표시를 수동으로 구성하려면:
-
YMANativeAdView
클래스에 대한 사용자 지정view
를 생성합니다. -
사용자 정의 요소의 배치를 구성하여 구성 요소를 표시합니다.
-
이 사용자 정의 요소를 해당
YMANativeAdView
속성에 연결합니다.final class CustomNativeAdView: YMANativeAdView { // ... init() { super.init(frame: CGRect()) setupUI() bindAssets() } private func bindViews() { titleLabel = customTitleLabel domainLabel = customDomainLabel warningLabel = customWarningLabel sponsoredLabel = customSponsoredLabel feedbackButton = customFeedbackButton callToActionButton = customCallToActionButton mediaView = customMediaView priceLabel = customPriceLabel reviewCountLabel = customReviewCountLabel ratingView = customRatingView bodyLabel = customBodyLabel iconImageView = customIconImageView } private func setupUI() { // ... } }
Примечание
사용자 정의 요소를 필수 구성 요소의
YMANativeAdView
속성에 연결하지 않으면 광고가 표시되지 않습니다. -
사용자 정의
view
를NativeAd
광고 객체에 연결하여NativeAdLoaderDelegate
대리자의nativeAdLoader(_ loader: NativeAdLoader, didLoad ad: NativeAd)
메서드에서 네이티브 광고를 표시합니다. 이를 위해NativeAd
객체에 대해bind(with adView: YMANativeAdView)
메서드를 호출합니다.final class NativeCustomViewController: UIViewController, NativeAdDelegate { private let adView = NativeCustomAdView() // ... private lazy var adLoader: NativeAdLoader = { let adLoader = NativeAdLoader() adLoader.delegate = self return adLoader }() override func viewDidLoad() { super.viewDidLoad() setupUI() loadNativeAd() } private func loadNativeAd() { let requestConfiguration = NativeAdRequestConfiguration(adUnitID: "demo-native-app-yandex") adLoader.loadAd(with: requestConfiguration) } private func bindNativeAd(_ ad: NativeAd) { ad.delegate = self do { try ad.bind(with: adView) } catch { // ... } } private func setupUI() { // ... } } extension NativeCustomViewController: NativeAdLoaderDelegate { func nativeAdLoader(_ loader: NativeAdLoader, didLoad ad: NativeAd) { bindNativeAd(ad) } func nativeAdLoader(_ loader: NativeAdLoader, didFailLoadingWithError error: Error) { // ... } }
여러 광고 로드
Yandex Mobile Ads SDK를 사용하면 한 번의 요청으로 여러 광고를 로드할 수 있습니다(최대 9개 광고).
Примечание
AdUnitID
에 대한 데모 광고 단위 demo-native-bulk-yandex
를 사용하세요. 지원되는 플랫폼은 데모 광고 단위 페이지에서 확인할 수 있습니다.
-
네이티브 광고를 가져오려면
NativeBulkAdLoader
클래스의 인스턴스를 생성합니다. -
NativeAdRequestConfiguration
클래스를 사용하여nativeAdRequestConfiguration
을 생성합니다. 요청 매개변수로 광고 단위 ID, 이미지 로드 방법, 나이, 성별 및 광고 선택 품질을 향상할 수 있는 기타 데이터를 사용할 수 있습니다. -
NativeBulkAdLoaderDelegate
프로토콜을 구현하는 광고 검색을 위한 대리자를 설정합니다. -
광고 로딩 과정을 추적하려면
NativeBulkAdLoaderDelegate:
프로토콜 메서드(-nativeBulkAdLoader:didLoadAds:
및-nativeBulkAdLoader:didFailLoadingWithError:
)를 구현합니다. -
로더에 요청 구성 및 요청된 광고 수(
adsCount
매개변수)를 전송합니다.
// 요청 구성 생성
let requestConfiguration = MutableNativeAdRequestConfiguration(adUnitID: AdUnitID)
// 로더 생성
adLoader = NativeBulkAdLoader()
adLoader.delegate = self
// 로더에 요청 구성 및 요청된 광고의 수 전달
adLoader.loadAds(with: requestConfiguration, adsCount: adsCount)
// 대리인 메서드 구현
func nativeBulkAdLoader(_ nativeBulkAdLoader: NativeBulkAdLoader, didLoad ads: [NativeAd]) {
// ..
// id<NativeAd>이(가) 있는 객체를 개별적으로 처리
}
Примечание
대량 광고 요청을 통해 여러 개의 개별 광고를 선택할 수 있습니다.
대량 요청으로 반환된 광고 어레이에는 0개에서 adsCount
개 사이의 NativeAd
객체가 포함될 수 있습니다. 수신된 모든 광고 객체는 위의 네이티브 광고 레이아웃 방식을 사용하여 서로 독립적으로 렌더링할 수 있습니다.
네이티브 광고 통합 테스트
광고 테스트를 위한 데모 광고 단위 사용
네이티브 광고 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.
모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.
텍스트 및 이미지 광고를 위한 데모 adUnitId
: demo-native-content-yandex
.
모바일 앱 광고를 위한 데모 adUnitId
: demo-native-app-yandex
.
Важно
앱을 스토어에 게시하기 전에 데모 광고 단위 ID를 Partner Interface에서 가져온 실제 ID로 교체해야 합니다.
광고 통합 테스트
네이티브 콘솔 도구를 사용하여 광고 통합을 테스트할 수 있습니다.
자세한 로그를 보려면 YMAMobileAds
클래스의 enableLogging
메서드를 호출하세요.
YMAMobileAds.enableLogging()
SDK 로그를 보려면 콘솔 도구로 이동하여 Subsystem = com.mobile.ads.ads.sdk
를 설정하세요. 카테고리와 오류 수준별로 로그를 필터링할 수도 있습니다.
광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.

네이티브 광고 통합 표시기
Примечание
기본적으로 이 표시기는 시뮬레이터 모드(장치 유형 DeviceTypeSimulator
)에서만 표시됩니다. 장치 유형은 DeviceType
에서 확인할 수 있습니다.
네이티브 광고 통합 시 오류가 발생하면 시뮬레이터 모드에서 광고 상단에 표시기가 나타납니다. 표시기를 클릭하면 오류의 원인을 이해하는 데 도움이 되는 디버깅 정보가 포함된 메시지를 볼 수 있습니다. 표시기를 다시 클릭하면 메시지가 숨겨집니다.
실제 장치에서도 표시기를 활성화하려면 | enableVisibilityErrorIndicatorForDeviceType:
메서드에서 DeviceTypeHardware DeviceTypeSimulator
값을 전달하세요.
MobileAds.enableVisibilityErrorIndicator(for: [.hardware, .simulator])
표시기를 비활성화하려면 enableVisibilityErrorIndicatorForDeviceType:
메서드에서 값 DeviceTypeNone
을 전달하세요.
MobileAds.enableVisibilityErrorIndicator(for: [])
|
|
추가 리소스
-
GitHub 링크.