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

How It Works

광고 단위 설정
대시보드에서 발급받은ad unit ID를 사용하여 광고 단위를 설정하세요.
- Swift
- Objective-C
복사
AI에게 묻기
let rewardAdUnit = DaroAdUnit(unitId: "your_rewarded_unit_id")
복사
AI에게 묻기
// Objective-C에서는 초기화 시 unitId를 직접 전달합니다
NSString *rewardedUnitId = @"your_rewarded_unit_id";
광고 구현
- Swift
- Objective-C
복사
AI에게 묻기
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)
}
}
1. 헤더 파일에서 delegate 프로토콜 채택:2. 리워드 비디오 광고 설정 및 로드:3. Delegate 메서드 구현:4. 광고 표시:
복사
AI에게 묻기
@interface ExampleViewController () <DaroObjCRewardedAdDelegate>
@property (nonatomic, strong) DaroObjCRewardedAd *rewardedAd;
@end
복사
AI에게 묻기
- (void)setupRewardedAd {
self.rewardedAd = [[DaroObjCRewardedAd alloc]
initWithAdUnitId:@"your_rewarded_unit_id"];
self.rewardedAd.delegate = self;
// 광고 로드
[self.rewardedAd load];
}
복사
AI에게 묻기
#pragma mark - DaroObjCRewardedAdDelegate
- (void)rewardedAdDidLoad:(DaroObjCRewardedAd *)ad
adInfo:(DaroObjCAdInfo *)adInfo {
NSLog(@"[DARO] Rewarded ad loaded - Unit: %@", adInfo.adUnitId);
}
- (void)rewardedAdDidFail:(DaroObjCRewardedAd *)ad
toLoad:(NSError *)error {
NSLog(@"[DARO] Failed to load: %@", error.localizedDescription);
}
- (void)rewardedAdDidShow:(DaroObjCRewardedAd *)ad
adInfo:(DaroObjCAdInfo *)adInfo {
NSLog(@"[DARO] Rewarded ad shown");
}
- (void)rewardedAdDidFail:(DaroObjCRewardedAd *)ad
toShow:(DaroObjCAdInfo *)adInfo
error:(NSError *)error {
NSLog(@"[DARO] Failed to show: %@", error.localizedDescription);
}
- (void)rewardedAdDidClick:(DaroObjCRewardedAd *)ad
adInfo:(DaroObjCAdInfo *)adInfo {
NSLog(@"[DARO] Rewarded ad clicked");
}
- (void)rewardedAdDidRecordImpression:(DaroObjCRewardedAd *)ad
adInfo:(DaroObjCAdInfo *)adInfo {
NSLog(@"[DARO] Impression recorded");
}
- (void)rewardedAdDidEarnReward:(DaroObjCRewardedAd *)ad
adInfo:(DaroObjCAdInfo *)adInfo
rewardedItem:(DaroObjCRewardedItem *)rewardedItem {
NSLog(@"[DARO] Reward earned! Type: %@, Amount: %d",
rewardedItem.rewardType, rewardedItem.amount);
}
- (void)rewardedAdDidDismiss:(DaroObjCRewardedAd *)ad
adInfo:(DaroObjCAdInfo *)adInfo {
NSLog(@"[DARO] Rewarded ad dismissed");
}
복사
AI에게 묻기
- (void)showRewardedAd {
if (self.rewardedAd.isReady) {
[self.rewardedAd showFrom:self];
} else {
NSLog(@"[DARO] Ad is not ready to show");
}
}
리워드 아이템 구조
리워드 비디오 광고 시청 완료 시 전달되는 리워드 아이템은 다음과 같은 구조를 가집니다:- Swift
- Objective-C
복사
AI에게 묻기
struct DaroRewardedItem {
let amount: Int // 보상 수량
let rewardType: String // 보상 타입 (예: "coin", "gem", "energy" 등)
}
복사
AI에게 묻기
@interface DaroObjCRewardedItem : NSObject
@property (nonatomic, assign, readonly) NSInteger amount; // 보상 수량
@property (nonatomic, strong, readonly) NSString *rewardType; // 보상 타입 (예: "coin", "gem", "energy" 등)
@end
추가 기능
사용자 식별자 설정
다음 코드는 사용자의 내부 User ID를 태그하는 방법을 보여줍니다. User ID 문자열의 최대 크기는 8192자입니다.- Swift
- Objective-C
복사
AI에게 묻기
DaroAds.shared.userId = "user_id"
복사
AI에게 묻기
[DaroObjCAds shared].userId = @"user_id";
플레이스먼트 설정
광고 표시 전에 placement를 설정할 수 있습니다.- Swift
- Objective-C
복사
AI에게 묻기
daroRewardedAd?.setPlacement("your_rewarded_placement")
daroRewardedAd?.show(viewController: self)
복사
AI에게 묻기
[self.rewardedAd setPlacement:@"your_rewarded_placement"];
[self.rewardedAd showFrom:self];
커스텀 데이터 설정
리워드 비디오 광고에 커스텀 데이터를 추가할 수 있습니다. 이 데이터는 서버 측 콜백에서 사용할 수 있습니다.- Swift
- Objective-C
복사
AI에게 묻기
daroRewardedAd?.setCustomData("your_custom_data")
daroRewardedAd?.show(viewController: self)
복사
AI에게 묻기
[self.rewardedAd setCustomData:@"your_custom_data"];
[self.rewardedAd showFrom:self];

