Skip to main content

리워드 비디오 형태 소개

  • 광고 시청을 대가로 인앱 가치를 지닌 보상(재화, 기능, 컨텐츠 등)을 제공하는 형태의 광고입니다.
  • 보상을 대가로 시청하므로 동영상 광고의 스킵이 불가능하며 일반적인 길이는 30초입니다.
보상형 광고 예시

광고 단위 설정

대시보드에서 발급받은 ad unit ID를 사용하여 광고 단위를 설정하세요.
let rewardAdUnit = DaroAdUnit(unitId: "your_rewarded_unit_id")

광고 구현

class ExampleViewController: UIViewController {
    private var daroRewardedAd: DaroRewardedAd? = nil
    let daroRewardedLoader = DaroRewardedAdLoader(unit: rewardAdUnit)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupRewardedAd()
    }
    
    private func setupRewardedAd() {
        // 광고 로드 성공 리스너
        daroRewardedLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
            print("[DARO] Listener Reward Ad loaded: \(ad) \(adInfo)")
            self?.showAd(ad: ad)
        }
        
        // 광고 클릭 리스너
        daroRewardedLoader.listener.onAdClicked = { adInfo in
            print("[DARO] Listener Reward Ad clicked: \(adInfo)")
        }
        
        // 광고 노출 리스너
        daroRewardedLoader.listener.onAdImpression = { adInfo in
            print("[DARO] Listener Reward Ad impression: \(adInfo)")
        }
        
        // 광고 로드 실패 리스너
        daroRewardedLoader.listener.onAdLoadFail = { error in
            print("[DARO] Listener Reward Ad failed: \(error)")
        }
        
        daroRewardedLoader.loadAd()
    }
    
    private func showAd(ad: DaroRewardedAd) {
        self.daroRewardedAd = ad
        
        // 보상 획득 리스너
        self.daroRewardedAd?.rewardedAdListener.onEarnedReward = { adInfo, rewardedItem in
            print("[DARO] Listener Reward Ad earned: \(adInfo) \(rewardedItem)")
        }
        
        // 광고 표시 성공 리스너
        self.daroRewardedAd?.rewardedAdListener.onShown = { adInfo in
            print("[DARO] Listener Reward Ad shown: \(adInfo)")
        }
        
        // 광고 닫힘 리스너
        self.daroRewardedAd?.rewardedAdListener.onDismiss = { adInfo in
            print("[DARO] Listener Reward Ad dismissed: \(adInfo)")
        }
        
        // 광고 표시 실패 리스너
        self.daroRewardedAd?.rewardedAdListener.onFailedToShow = { adInfo, error in
            print("[DARO] Listener Reward Ad failed to show: \(adInfo) \(error)")
        }
        
        showRewardedAd()
    }
    
    private func showRewardedAd() {
        daroRewardedAd?.show(viewController: self)
    }
}

리워드 아이템 구조

리워드 비디오 광고 시청 완료 시 전달되는 DaroRewardedItem은 다음과 같은 구조를 가집니다:
struct DaroRewardedItem {
    let amount: Int           // 보상 수량
    let rewardType: String    // 보상 타입 (예: "coin", "gem", "energy" 등)
}

추가 기능

사용자 식별자 설정

다음 코드는 사용자의 내부 User ID를 태그하는 방법을 보여줍니다. User ID 문자열의 최대 크기는 8192자입니다.
DaroAds.shared.userId = "user_id"

플레이스먼트 설정

다음 코드는 ad unit에 placement 이름을 추가하는 방법을 보여줍니다.
let rewardAdUnit = DaroAdUnit(
    unitId: "your_rewarded_unit_id", 
    placement: "your_rewarded_placement"
)
I