리워드 광고(SwiftUI)

보상형 광고는 사용자가 광고를 시청하면 보상을 받는 인기 있는 전체 화면 광고 형식입니다.

이 광고 유형의 표시는 예를 들어 게임에서 보너스나 추가 생명을 받으려는 사용자에 의해 활성화됩니다.

사용자 동기 부여가 높기 때문에 무료 앱에서 가장 인기 있고 수익성이 높은 광고 형식입니다.

모양

이 가이드는 iOS 앱에서 SwiftUI로 리워드 광고를 연동하는 방법을 설명합니다.

사전 요구 사항

  1. 빠른 시작에 설명된 SDK 통합 단계를 수행하세요.
  2. 광고 SDK를 미리 초기화하세요.
  3. 최신 Yandex Mobile Ads SDK 버전을 사용하고 있는지 확인하세요. 미디에이션을 사용하는 경우, 최신 통합 빌드 버전을 실행하고 있는지도 확인하세요.

구현

SwiftUI에서 리워드 광고 연동 주요 단계:

  • .rewardedAd(isPresented:request:onEvent:) 수정자 사용.
  • Binding<AdRequest?>로 로드, Binding<Bool>로 표시 제어.
  • onEvent에서 RewardedAdEvent 처리.
  • .didReward에서 사용자에게 보상 지급.

리워드 광고 연동 시 유의사항

  1. .didFailToLoad 직후 재로드는 권장하지 않습니다. 재시도 시 횟수를 제한하세요.

  2. 표시 시나리오 동안 유지되는 뷰에 수정자를 두세요.

광고 로드

.rewardedAd에 넘긴 바인딩에 nil이 아닌 AdRequest를 설정해 로드합니다.

onEventRewardedAdEvent로 단계별 알림을 받습니다.

import SwiftUI
import YandexMobileAds

struct RewardedView: View {
    @State private var adRequest: AdRequest?
    @State private var isPresented = false

    var body: some View {
        VStack {
            Button("로드 및 표시") {
                adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
            }
        }
        .rewardedAd(isPresented: $isPresented, request: $adRequest) { event in
            switch event {
            case .didLoad:
                isPresented = true
            case .didDismiss, .didFailToShow, .didFailToLoad:
                adRequest = nil
            default:
                break
            }
        }
    }
}

광고 단위 ID는 Yandex Advertising Network에서 받습니다.

AdRequest로 컨텍스트를 확장할 수 있습니다. 광고 타겟팅 참고.

광고 표시

보상형 광고는 사용자가 광고를 시청하면 보상을 받을 수 있는 인센티브 기반 광고 형식입니다. 보상은 게임에서 추가 생명이나 다음 레벨로의 진행일 수 있습니다. 보상 형식은 앱 수준에서 결정됩니다.

.didLoadisPresented = true로 표시하거나 미리 플래그를 켤 수 있습니다. 로드가 끝나지 않았으면 표시는 연기됩니다.

struct RewardedView: View {
    @State private var adRequest: AdRequest?
    @State private var isPresented = false

    var body: some View {
        ContentView()
            .rewardedAd(isPresented: $isPresented, request: $adRequest) { event in
                switch event {
                case .didLoad:
                    isPresented = true
                case .didDismiss, .didFailToShow, .didFailToLoad:
                    adRequest = nil
                default:
                    break
                }
            }
    }
}

보상 지급

노출이 정상 집계되면 onEvent.didReward(Reward)가 옵니다. 여기서 보상을 지급하세요. .didDismiss만으로는 부족합니다.

struct RewardedView: View {
    @State private var adRequest: AdRequest?
    @State private var isPresented = false

    var body: some View {
        ContentView()
            .rewardedAd(isPresented: $isPresented, request: $adRequest) { event in
                switch event {
                case .didReward(let reward):
                    sendReward(reward)
                case .didDismiss, .didFailToShow, .didFailToLoad:
                    adRequest = nil
                default:
                    break
                }
            }
    }

    private func sendReward(_ reward: Reward) {
        // 보상 지급
    }
}

리워드 광고 연동 테스트

데모 블록으로 테스트

광고 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.

모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.

데모 adUnitId: demo-rewarded-yandex.

Важно

앱을 스토어에 게시하기 전에 데모 배치 ID를 Yandex Advertising Network 인터페이스에서 획득한 실제 ID로 교체해야 합니다.

사용 가능한 데모 광고 배치 ID 목록은 테스트용 데모 광고 단위 섹션에서 찾을 수 있습니다.

연동이 올바른지 확인

네이티브 콘솔 도구를 사용하여 광고 통합을 테스트할 수 있습니다.

자세한 로그를 보려면 YMAMobileAds 클래스의 enableLogging 메서드를 호출하세요.

YMAMobileAds.enableLogging()

SDK 로그를 보려면 콘솔 도구로 이동하여 Subsystem = com.mobile.ads.ads.sdk를 설정하세요. 카테고리와 오류 수준별로 로그를 필터링할 수도 있습니다.

광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.

추가 자료